{"version":3,"sources":["../node_modules/lodash.throttle/index.js","../node_modules/qr.js/lib/mode.js","../node_modules/qr.js/lib/ErrorCorrectLevel.js","../node_modules/qr.js/lib/Polynomial.js","../node_modules/qr.js/lib/math.js","../node_modules/@material-ui/icons/InfoOutlined.js","../node_modules/draft-js/lib/AtomicBlockUtils.js","../node_modules/draft-js/lib/ContentStateInlineStyle.js","../node_modules/draft-js/lib/applyEntityToContentState.js","../node_modules/draft-js/lib/applyEntityToContentBlock.js","../node_modules/draft-js/lib/getCharacterRemovalRange.js","../node_modules/draft-js/lib/DraftEntitySegments.js","../node_modules/draft-js/lib/getRangesForDraftEntity.js","../node_modules/draft-js/lib/insertFragmentIntoContentState.js","../node_modules/draft-js/lib/insertTextIntoContentState.js","../node_modules/draft-js/lib/removeRangeFromContentState.js","../node_modules/draft-js/lib/splitBlockInContentState.js","../node_modules/draft-js/lib/BlockTree.js","../node_modules/draft-js/lib/uuid.js","../node_modules/draft-js/lib/EditorBidiService.js","../node_modules/fbjs/lib/UnicodeBidiService.js","../node_modules/draft-js/lib/moveBlockInContentState.js","../node_modules/draft-js/lib/CompositeDraftDecorator.js","../node_modules/draft-js/lib/DraftEditor.react.js","../node_modules/draft-js/lib/DraftEditorCompositionHandler.js","../node_modules/draft-js/lib/DOMObserver.js","../node_modules/fbjs/lib/UserAgentData.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/fbjs/lib/VersionRange.js","../node_modules/fbjs/lib/mapObject.js","../node_modules/fbjs/lib/memoizeStringOnly.js","../node_modules/draft-js/lib/DraftEditorContents.react.js","../node_modules/draft-js/lib/DraftEditorContentsExperimental.react.js","../node_modules/draft-js/lib/DraftEditorBlockNode.react.js","../node_modules/draft-js/lib/DraftEditorNode.react.js","../node_modules/draft-js/lib/DraftEditorDecoratedLeaves.react.js","../node_modules/draft-js/lib/DraftEditorTextNode.react.js","../node_modules/draft-js/lib/setDraftEditorSelection.js","../node_modules/fbjs/lib/isTextNode.js","../node_modules/fbjs/lib/isNode.js","../node_modules/fbjs/lib/getStyleProperty.js","../node_modules/fbjs/lib/camelize.js","../node_modules/fbjs/lib/hyphenate.js","../node_modules/fbjs/lib/getElementRect.js","../node_modules/fbjs/lib/getDocumentScrollElement.js","../node_modules/fbjs/lib/getUnboundedScrollPosition.js","../node_modules/draft-js/lib/DraftEditorContents-core.react.js","../node_modules/fbjs/lib/joinClasses.js","../node_modules/draft-js/lib/DraftEditorDragHandler.js","../node_modules/fbjs/lib/PhotosMimeType.js","../node_modules/fbjs/lib/createArrayFromMixed.js","../node_modules/draft-js/lib/DraftEditorEditHandler.js","../node_modules/draft-js/lib/editOnBeforeInput.js","../node_modules/draft-js/lib/isSelectionAtLeafStart.js","../node_modules/fbjs/lib/setImmediate.js","../node_modules/draft-js/lib/editOnBlur.js","../node_modules/draft-js/lib/editOnCompositionStart.js","../node_modules/draft-js/lib/editOnCopy.js","../node_modules/draft-js/lib/editOnCut.js","../node_modules/draft-js/lib/isInstanceOfNode.js","../node_modules/draft-js/lib/editOnDragOver.js","../node_modules/draft-js/lib/editOnDragStart.js","../node_modules/draft-js/lib/editOnFocus.js","../node_modules/draft-js/lib/editOnInput.js","../node_modules/draft-js/lib/editOnKeyDown.js","../node_modules/draft-js/lib/isSoftNewlineEvent.js","../node_modules/draft-js/lib/SecondaryClipboard.js","../node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js","../node_modules/draft-js/lib/expandRangeToStartOfLine.js","../node_modules/draft-js/lib/keyCommandBackspaceWord.js","../node_modules/fbjs/lib/TokenizeUtil.js","../node_modules/draft-js/lib/keyCommandDeleteWord.js","../node_modules/draft-js/lib/keyCommandInsertNewline.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js","../node_modules/draft-js/lib/keyCommandPlainDelete.js","../node_modules/draft-js/lib/keyCommandTransposeCharacters.js","../node_modules/draft-js/lib/keyCommandUndo.js","../node_modules/draft-js/lib/editOnPaste.js","../node_modules/draft-js/lib/DraftPasteProcessor.js","../node_modules/fbjs/lib/URI.js","../node_modules/draft-js/lib/isHTMLAnchorElement.js","../node_modules/draft-js/lib/isHTMLImageElement.js","../node_modules/draft-js/lib/adjustBlockDepthForContentState.js","../node_modules/draft-js/lib/splitTextIntoTextBlocks.js","../node_modules/draft-js/lib/DraftEditorFlushControlled.js","../node_modules/draft-js/lib/DraftEditorPlaceholder.react.js","../node_modules/draft-js/lib/convertFromDraftStateToRaw.js","../node_modules/draft-js/lib/encodeEntityRanges.js","../node_modules/draft-js/lib/encodeInlineStyleRanges.js","../node_modules/draft-js/lib/convertFromRawToDraftState.js","../node_modules/draft-js/lib/DraftTreeAdapter.js","../node_modules/draft-js/lib/DraftTreeInvariants.js","../node_modules/draft-js/lib/createCharacterList.js","../node_modules/draft-js/lib/decodeEntityRanges.js","../node_modules/draft-js/lib/decodeInlineStyleRanges.js","../node_modules/draft-js/lib/getVisibleSelectionRect.js","../node_modules/draft-js/lib/getRangeBoundingClientRect.js","../node_modules/qr.js/lib/QRCode.js","../node_modules/qr.js/lib/8BitByte.js","../node_modules/qr.js/lib/RSBlock.js","../node_modules/qr.js/lib/BitBuffer.js","../node_modules/qr.js/lib/util.js","../node_modules/@material-ui/core/esm/useMediaQuery/useMediaQuery.js","../node_modules/@material-ui/core/esm/TableCell/TableCell.js","../node_modules/@material-ui/core/esm/TableContainer/TableContainer.js","../node_modules/@material-ui/core/esm/Table/Table.js","../node_modules/@material-ui/core/esm/TableHead/TableHead.js","../node_modules/@material-ui/core/esm/TableRow/TableRow.js","../node_modules/@material-ui/core/esm/TableBody/TableBody.js","../node_modules/@material-ui/core/esm/DialogTitle/DialogTitle.js","../node_modules/@material-ui/core/esm/Fab/Fab.js","../node_modules/@material-ui/icons/esm/Phone.js","../node_modules/@material-ui/core/esm/withWidth/withWidth.js","../node_modules/@material-ui/core/esm/Hidden/HiddenJs.js","../node_modules/@material-ui/core/esm/Hidden/HiddenCss.js","../node_modules/@material-ui/core/esm/Hidden/Hidden.js","../node_modules/immutable/dist/immutable.js","../node_modules/fbjs/lib/invariant.js","../node_modules/draft-js/lib/EditorState.js","../node_modules/draft-js/lib/DraftModifier.js","../node_modules/fbjs/lib/nullthrows.js","../node_modules/fbjs/lib/UserAgent.js","../node_modules/draft-js/lib/CharacterMetadata.js","../node_modules/draft-js/lib/ContentBlockNode.js","../node_modules/draft-js/lib/generateRandomKey.js","../node_modules/draft-js/lib/DraftOffsetKey.js","../node_modules/draft-js/lib/gkx.js","../node_modules/draft-js/lib/ContentBlock.js","../node_modules/fbjs/lib/cx.js","../node_modules/draft-js/lib/isElement.js","../node_modules/fbjs/lib/UnicodeUtils.js","../node_modules/qrcode.react/lib/index.js","../node_modules/draft-js/lib/BlockMapBuilder.js","../node_modules/draft-js/lib/findRangesImmutable.js","../node_modules/draft-js/lib/isHTMLElement.js","../node_modules/draft-js/lib/removeTextWithStrategy.js","../node_modules/@material-ui/core/esm/Table/Tablelvl2Context.js","../node_modules/draft-js/lib/getContentStateFragment.js","../node_modules/draft-js/lib/DraftEntity.js","../node_modules/draft-js/lib/SelectionState.js","../node_modules/fbjs/lib/UnicodeBidiDirection.js","../node_modules/draft-js/lib/findAncestorOffsetKey.js","../node_modules/draft-js/lib/getCorrectDocumentFromNode.js","../node_modules/fbjs/lib/Keys.js","../node_modules/fbjs/lib/Style.js","../node_modules/fbjs/lib/getScrollPosition.js","../node_modules/draft-js/lib/isEventHandled.js","../node_modules/draft-js/lib/Draft.js","../node_modules/draft-js/lib/ContentState.js","../node_modules/fbjs/lib/UnicodeBidi.js","../node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js","../node_modules/draft-js/lib/getEntityKeyForSelection.js","../node_modules/fbjs/lib/containsNode.js","../node_modules/fbjs/lib/Scroll.js","../node_modules/draft-js/lib/moveSelectionBackward.js","../node_modules/fbjs/lib/warning.js","../node_modules/draft-js/lib/KeyBindingUtil.js","../node_modules/setimmediate/setImmediate.js","../node_modules/@material-ui/core/esm/Table/TableContext.js","../node_modules/draft-js/lib/randomizeBlockMapKeys.js","../node_modules/draft-js/lib/removeEntitiesAtEdges.js","../node_modules/draft-js/lib/insertIntoList.js","../node_modules/draft-js/lib/modifyBlockForContentState.js","../node_modules/draft-js/lib/getNextDelimiterBlockKey.js","../node_modules/draft-js/lib/getOwnObjectValues.js","../node_modules/draft-js/lib/DraftEntityInstance.js","../node_modules/draft-js/lib/sanitizeDraftText.js","../node_modules/draft-js/lib/DefaultDraftInlineStyle.js","../node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js","../node_modules/draft-js/lib/getWindowForNode.js","../node_modules/draft-js/lib/editOnSelect.js","../node_modules/draft-js/lib/DraftJsDebugLogging.js","../node_modules/draft-js/lib/getContentEditableContainer.js","../node_modules/draft-js/lib/getDraftEditorSelection.js","../node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js","../node_modules/draft-js/lib/getUpdatedSelectionState.js","../node_modules/draft-js/lib/draftKeyUtils.js","../node_modules/draft-js/lib/DraftEditorLeaf.react.js","../node_modules/draft-js/lib/isHTMLBRElement.js","../node_modules/draft-js/lib/DraftEffects.js","../node_modules/fbjs/lib/getActiveElement.js","../node_modules/fbjs/lib/getElementPosition.js","../node_modules/fbjs/lib/getViewportDimensions.js","../node_modules/draft-js/lib/DraftEditorBlock.react.js","../node_modules/fbjs/lib/DataTransfer.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/draft-js/lib/getTextContentFromFiles.js","../node_modules/draft-js/lib/getFragmentFromSelection.js","../node_modules/draft-js/lib/keyCommandPlainBackspace.js","../node_modules/draft-js/lib/getRangeClientRects.js","../node_modules/draft-js/lib/DraftRemovableWord.js","../node_modules/draft-js/lib/moveSelectionForward.js","../node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js","../node_modules/draft-js/lib/getSafeBodyFromHTML.js","../node_modules/draft-js/lib/RichTextEditorUtil.js","../node_modules/draft-js/lib/getDefaultKeyBinding.js","../node_modules/draft-js/lib/DraftStringKey.js","../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.js","../node_modules/memoize-one/dist/memoize-one.esm.js"],"names":["reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","arguments","this","toNumber","isObject","cancel","clearTimeout","flush","value","type","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","L","M","Q","H","math","require","QRPolynomial","num","shift","length","Error","offset","Array","i","get","index","getLength","multiply","e","j","gexp","glog","mod","ratio","QRMath","n","LOG_TABLE","EXP_TABLE","_interopRequireDefault","defineProperty","default","_react","_default","createElement","d","_objectSpread","target","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","enumerable","forEach","key","_defineProperty","obj","configurable","writable","BlockMapBuilder","CharacterMetadata","ContentBlock","ContentBlockNode","DraftModifier","EditorState","generateRandomKey","gkx","Immutable","moveBlockInContentState","experimentalTreeDataSupport","ContentBlockRecord","List","Repeat","AtomicBlockUtils","insertAtomicBlock","editorState","entityKey","character","contentState","getCurrentContent","selectionState","getSelection","afterRemoval","removeRange","targetSelection","getSelectionAfter","afterSplit","splitBlock","insertionTarget","asAtomicBlock","setBlockType","charData","create","entity","atomicBlockConfig","text","characterList","atomicDividerBlockConfig","nextSibling","prevSibling","fragmentArray","fragment","createFromArray","withAtomicBlock","replaceWithFragment","newContent","merge","selectionBefore","selectionAfter","set","push","moveAtomicBlock","atomicBlock","targetRange","insertionMode","withMovedAtomicBlock","targetBlock","getBlockForKey","getStartKey","getEndKey","selectionAfterRemoval","_targetBlock","getFocusKey","getStartOffset","getEndOffset","selectionAfterSplit","_targetBlock2","Map","ContentStateInlineStyle","add","inlineStyle","modifyInlineStyle","remove","addOrRemove","blockMap","getBlockMap","startKey","startOffset","endKey","endOffset","newBlocks","skipUntil","_","k","takeUntil","map","block","blockKey","sliceStart","sliceEnd","current","chars","getCharacterList","applyStyle","removeStyle","applyEntityToContentBlock","toOrderedMap","OrderedMap","contentBlock","startArg","end","start","applyEntity","DraftEntitySegments","getRangesForDraftEntity","invariant","getEntityRemovalRange","entityMap","direction","isEntireSelectionWithinEntity","isEntityAtStart","mutability","__get","getMutability","sideToConsider","entityRanges","range","entityRange","anchorOffset","focusOffset","isBackward","removalRange","getRemovalRange","getText","startBlock","endBlock","startEntityKey","getEntityAt","endEntityKey","newSelectionState","startSelectionState","endSelectionState","getAnchorOffset","getFocusOffset","_startSelectionState","_endSelectionState","selectionStart","selectionEnd","entityStart","segments","split","segment","ii","segmentEnd","segmentStart","removalStart","removalEnd","jj","entityEnd","atStart","atEnd","ranges","findEntityRanges","c","getEntity","insertIntoList","randomizeBlockMapKeys","updateExistingBlock","fragmentBlock","targetKey","targetOffset","mergeBlockData","finalKey","finalOffset","data","getData","getType","newBlock","anchorKey","focusKey","insertFragment","isTreeBasedBlockMap","first","newBlockArr","fragmentSize","size","head","tail","last","getKey","shouldNotUpdateFromFragmentBlock","getChildKeys","isEmpty","headText","headCharacters","appendToHead","updateHead","blockSize","tailText","tailCharacters","prependToTail","updateTail","updatedBlockMap","originalBlockMap","fragmentHeadBlock","withMutations","blockMapState","headKey","targetNextKey","getNextSiblingKey","targetParentKey","getParentKey","fragmentRootBlocks","rootBlock","rootBlocks","lastSiblingKey","getRootBlocks","lastRootFragmentBlockKey","setIn","originalTargetParentChildKeys","insertionIndex","indexOf","newChildrenKeysArray","toArray","splice","updateBlockMapLinks","fragmentBlockMap","isCollapsed","characterMetadata","len","blockText","toList","newOffset","getNextDelimiterBlockKey","transformBlock","getAncestorsKeys","parents","blockNode","parentKey","getNextValidSibling","nextValidSiblingKey","getPrevValidSibling","prevValidSiblingKey","getPrevSiblingKey","blocks","children","nextDelimiters","nextDelimiter","_block","getNextDelimitersBlockKeys","delimiterKey","prevSiblingKey","newParentKey","childKey","parent","newParent","find","removeFromList","targetList","count","pop","isExperimentalTreeBlock","parentAncestors","endBlockchildrenKeys","endBlockAncestors","modifiedStart","toSeq","modifyBlockForContentState","getAnchorKey","blockToSplit","blockType","depth","keyBelow","blockAbove","blockBelow","blocksBefore","v","blocksAfter","rest","originalBlock","belowBlock","originalBlockKey","belowBlockKey","parentChildrenList","newChildrenArray","findRangesImmutable","getOwnObjectValues","Record","returnTrue","LeafRange","DecoratorRange","decoratorKey","leaves","BlockTree","generate","decorator","textLength","of","leafSets","decorations","getDecorations","areEqual","generateLeaves","fromJS","_ref","excluded","sourceKeys","_objectWithoutPropertiesLoose","isArray","leaf","characters","inlineStyles","getStyle","a","b","r","random","bidiService","UnicodeBidiService","nullthrows","EditorBidiService","getDirectionMap","content","prevBidiMap","reset","nextBidi","valueSeq","getDirection","bidiMap","keySeq","zip","is","UnicodeBidi","UnicodeBidiDirection","defaultDir","isStrong","getGlobalDir","_defaultDir","_proto","_lastDir","str","originalBlockToBeMoved","originalTargetBlock","isInsertedAfterTarget","originalTargetKey","originalParentKey","originalNextSiblingKey","originalPrevSiblingKey","newNextSiblingKey","newPrevSiblingKey","newParentChildrenList","targetBlockIndex","blockToBeMoved","blocksToBeMoved","blockMapWithoutBlocksToBeMoved","nextSiblingKey","nextDelimiterBlockKey","takeWhile","isBlockToBeMoved","hasNextSiblingAndIsNotNextSibling","doesNotHaveNextSiblingAndIsNotDelimiter","skip","slicedBlocks","blockBefore","getBlockBefore","blockAfter","getBlockAfter","CompositeDraftDecorator","decorators","_decorators","fill","counter","strategy","canOccupySlice","targetArr","componentKey","occupySlice","getComponentForKey","component","getPropsForKey","props","_assign","_extends","hasOwnProperty","_assertThisInitialized","ReferenceError","_inheritsLoose","subClass","superClass","constructor","__proto__","DefaultDraftBlockRenderMap","DefaultDraftInlineStyle","DraftEditorCompositionHandler","DraftEditorContents","DraftEditorDragHandler","DraftEditorEditHandler","flushControlled","DraftEditorPlaceholder","DraftEffects","React","Scroll","Style","UserAgent","cx","getDefaultKeyBinding","getScrollPosition","isHTMLElement","isIE","isBrowser","allowSpellCheck","handlerMap","edit","composite","drag","cut","render","didInitODS","UpdateDraftEditorFlags","_React$Component","componentDidMount","_update","componentDidUpdate","editor","_latestEditorState","_blockSelectEvents","Component","DraftEditor","_React$Component2","_this","node","editorContainer","firstChild","scrollPosition","alreadyHasFocus","getHasFocus","editorNode","scrollParent","getScrollParent","x","y","focus","window","scrollTo","setTop","update","forceSelection","blur","mode","_this$props","onPaste","onCut","onCopy","editHandler","handler","_handler","setMode","setState","contentsKey","state","clipboard","_clipboard","onChange","_dragCount","exitCurrentMode","_editorKey","editorKey","_placeholderAccessibilityID","_latestCommittedEditorState","_onBeforeInput","_buildHandler","_onBlur","_onCharacterData","_onCompositionEnd","_onCompositionStart","_onCopy","_onCut","_onDragEnd","_onDragOver","_onDragStart","_onDrop","_onInput","_onFocus","_onKeyDown","_onKeyPress","_onKeyUp","_onMouseDown","_onMouseUp","_onPaste","_onSelect","getEditorKey","_proto2","eventName","_this2","readOnly","method","_showPlaceholder","placeholder","isInCompositionMode","hasText","_renderPlaceholder","placeHolderProps","textAlignment","accessibilityID","_renderARIADescribedBy","describedBy","ariaDescribedBy","placeholderID","_this$props2","blockRenderMap","blockRendererFn","blockStyleFn","customStyleFn","customStyleMap","preventScroll","textDirectionality","rootClass","ariaRole","role","ariaExpanded","editorContentsProps","className","ref","_handleEditorContainerRef","ariaActiveDescendantID","ariaAutoComplete","ariaControls","ariaLabel","ariaLabelledBy","ariaMultiline","ariaOwneeID","autoCapitalize","autoComplete","autoCorrect","notranslate","contentEditable","webDriverTestID","onBeforeInput","onBlur","onCompositionEnd","onCompositionStart","onDragEnd","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onFocus","onInput","onKeyDown","onKeyPress","onKeyUp","onMouseUp","onSelect","editorRef","spellCheck","style","outline","userSelect","WebkitUserSelect","whiteSpace","wordWrap","suppressContentEditableWarning","tabIndex","initODS","ownerDocument","execCommand","keyBindingFn","stripPastedStyles","DOMObserver","DraftOffsetKey","Keys","editOnSelect","getContentEditableContainer","getDraftEditorSelection","getEntityKeyForSelection","resolved","stillComposing","domObserver","startDOMObserver","resolveComposition","which","RIGHT","LEFT","preventDefault","_editor","RETURN","mutations","stopAndFlushMutations","inCompositionMode","composedChars","offsetKey","_DraftOffsetKey$decod","decode","leafKey","_editorState$getBlock","getBlockTree","getIn","replacementRange","currentStyle","getInlineStyleAt","replaceText","currentContent","compositionEndSelectionState","restoreEditorDOM","editorStateWithUpdatedSelection","acceptSelection","findAncestorOffsetKey","getWindowForNode","DOM_OBSERVER_OPTIONS","subtree","characterData","childList","characterDataOldValue","attributes","USE_CHAR_DATA","container","containerWindow","MutationObserver","observer","registerMutations","onCharData","Node","registerMutation","observe","addEventListener","takeRecords","disconnect","removeEventListener","getMutationTextContent","mutation","removedNodes","textContent","UAParser","UNKNOWN","PLATFORM_MAP","name","results","getResult","browserVersionData","version","major","minor","parts","getBrowserVersion","browser","uaData","browserArchitecture","cpu","architecture","browserFullVersion","browserMinorVersion","browserName","browserVersion","deviceName","device","model","engineName","engine","engineVersion","platformArchitecture","platformName","os","platformVersion","platformFullVersion","MODEL","NAME","TYPE","VENDOR","VERSION","MOBILE","TABLET","SMARTTV","util","extend","regexes","extensions","mergedRegexes","has","str1","str2","toLowerCase","lowerize","trim","mapper","rgx","ua","arrays","p","q","matches","match","regex","exec","maps","oldsafari","amazon","sprint","vendor","windows","uastring","navigator","userAgent","rgxmap","getBrowser","getCPU","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","WEARABLE","EMBEDDED","ENGINE","OS","define","$","jQuery","Zepto","parser","prop","componentRegex","orRegex","rangeRegex","modifierRegex","numericRegex","checkOrExpression","expressions","some","VersionRange","contains","checkSimpleExpression","startVersion","endVersion","isSimpleVersion","checkRangeExpression","versionComponents","_getModifierAndCompon","getModifierAndComponents","modifier","rangeComponents","checkLessThan","compareComponents","checkLessThanOrEqual","checkGreaterThanOrEqual","lowerBound","upperBound","lastIndex","numeric","isNumber","checkApproximateVersion","checkEqual","number","isNaN","isFinite","zeroPad","array","compareNumeric","aPrefix","bPrefix","aNumeric","bNumeric","compare","_normalizeVersions","normalizeVersions","aNormalized","bNormalized","object","callback","context","cache","string","DraftEditorBlockNode","DraftEditorContentsExperimental","shouldComponentUpdate","nextProps","prevEditorState","nextEditorState","nextNativeContent","getNativelyRenderedContent","wasComposing","nowComposing","prevContent","nextContent","prevDecorator","getDecorator","nextDecorator","mustForceSelection","selection","directionMap","processedBlocks","nodeBlock","getBlocksAsArray","blockProps","tree","wrapperTemplate","wrapper","encode","nextBlockKey","outputBlocks","info","wrapperElement","cloneElement","DraftEditorNode","getElementPosition","getViewportDimensions","isBlockOnSelectionEdge","getDraftRenderConfig","configForType","Element","element","getCustomRenderConfig","customRenderer","CustomComponent","customProps","customEditable","editable","getElementPropsConfig","customConfig","elementProps","customClass","_len","_key","createRef","isContainerNode","blockHasChanged","wrapperRef","scrollDelta","nodePosition","height","htmlBlockNode","offsetHeight","offsetTop","getTop","reduce","acc","child","_getDraftRenderConfig","childProps","shouldNotAddWrapperElement","nodes","wrappedSiblings","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","reverse","Symbol","iterator","next","done","sibling","err","childrenIs","applyWrapperElementToSiblings","hasSelection","DraftEditorDecoratedLeaves","DraftEditorLeaf","lastLeafSet","leafSet","leavesForLeafSet","lastLeaf","Leaves","styleSet","isLast","DecoratorComponent","decoratorProps","decoratorOffsetKey","decoratedText","dir","getHTMLDirIfDifferent","isElement","useNewlineChar","DraftEditorTextNode","_forceFlag","_node","shouldBeNewline","elementNode","tagName","isNewline","NEWLINE_A","NEWLINE_B","DraftJsDebugLogging","containsNode","getActiveElement","getCorrectDocumentFromNode","getAnonymizedDOM","getNodeLabels","anonymized","anonymizeTextWithin","labels","nodeType","TEXT_NODE","createTextNode","join","clone","cloneNode","setAttribute","childNodes","appendChild","outerHTML","getAnonymizedEditorDOM","currentNode","castedNode","hasAttribute","parentNode","getNodeLength","nodeValue","addFocusToSelection","activeElement","logSelectionStateFailure","anonymizedDom","extraParams","JSON","stringify","toJS","nodeWasFocus","focusNode","rangeCount","anchorNode","activeElementName","nodeName","nodeIsFocus","selectionRangeCount","selectionAnchorNodeName","selectionAnchorOffset","selectionFocusNodeName","selectionFocusOffset","message","getRangeAt","setEnd","addRange","cloneRange","addPointToSelection","createRange","handleExtensionCausedError","setStart","process","setDraftEditorSelection","nodeStart","nodeEnd","documentObject","documentElement","defaultView","getIsBackward","tempKey","tempOffset","hasAnchor","hasFocus","removeAllRanges","storedFocusNode","storedFocusOffset","isNode","document","camelize","hyphenate","asString","String","computedStyle","getComputedStyle","getPropertyValue","cssFloat","styleFloat","_hyphenPattern","toUpperCase","_uppercasePattern","elem","docElem","left","right","top","bottom","rect","getBoundingClientRect","round","clientLeft","clientTop","isWebkit","doc","scrollingElement","compatMode","body","scrollable","Window","pageXOffset","scrollLeft","pageYOffset","scrollTop","DraftEditorBlock","joinClasses","getListItemClasses","shouldResetCount","blocksAsArray","currentDepth","lastWrapperTemplate","componentProps","getDepth","_className","_ii","newClassName","argLength","nextClass","DataTransfer","getTextContentFromFiles","getUpdatedSelectionState","isEventHandled","endDrag","nativeEvent","dataTransfer","dropSelection","event","eventTargetDocument","currentTarget","caretRangeFromPoint","dropRange","startContainer","rangeParent","rangeOffset","getSelectionForEvent","files","getFiles","handleDroppedFiles","fileText","insertTextAtSelection","dragType","_internalDrag","handleDrop","newContentState","moveText","mouseUpEvent","MouseEvent","view","bubbles","cancelable","dispatchEvent","insertText","getCurrentInlineStyle","PhotosMimeType","isImage","mimeString","getParts","isJpeg","hasArrayNature","callee","ret","isChrome","isFirefox","selectionHandler","isSelectionAtLeafStart","setImmediate","_pendingStateFromBeforeInput","handleBeforeInput","timeStamp","newEditorState","mustPreventNative","oldBlockTree","newBlockTree","oldLeafSet","newLeafSet","oldStart","adjustedStart","oldEnd","adjustedEnd","newStart","newEnd","newDecoratorKey","nativelyRenderedContent","blockTree","isAtStart","leafStart","Boolean","preserveSelectionOnBlur","_selection","currentSelection","getFragmentFromSelection","setClipboard","removeFragment","notEmptyKey","keyCommandPlainBackspace","isGecko","isEngine","domSelection","isNotTextOrElementNode","ELEMENT_NODE","previousSibling","span","removeChild","domText","modelText","endsWith","preserveEntity","changeType","abs","charDelta","contentWithAdjustedDOMSelection","inputType","onInputType","KeyBindingUtil","SecondaryClipboard","keyCommandBackspaceToStartOfLine","keyCommandBackspaceWord","keyCommandDeleteWord","keyCommandInsertNewline","keyCommandMoveSelectionToEndOfBlock","keyCommandMoveSelectionToStartOfBlock","keyCommandPlainDelete","keyCommandTransposeCharacters","keyCommandUndo","isOptionKeyCommand","keyCode","callDeprecatedHandler","handlerName","deprecatedHandler","handleReturn","ESC","TAB","UP","DOWN","SPACE","command","handleKeyCommand","newState","redo","paste","onKeyCommand","getModifierState","getContentStateFragment","blockEnd","keyAfter","getKeyAfter","expandRangeToStartOfLine","getDraftEditorSelectionWithNodes","moveSelectionBackward","removeTextWithStrategy","strategyState","endContainer","UnicodeUtils","getRangeClientRects","areRectsOnOneLine","rects","lineHeight","minTop","Infinity","minBottom","maxTop","maxBottom","width","DOCUMENT_TYPE_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","collapsed","containingElement","computed","correctDocument","div","fontFamily","fontSize","fontStyle","fontWeight","position","documentBody","getLineHeightPx","bestContainer","bestOffset","setStartBefore","display","currentContainer","maxIndexToConsider","isSurrogatePair","DraftRemovableWord","toRemove","getBackward","getPunctuation","moveSelectionForward","getForward","charAhead","getUTF16Length","finalSelection","movedFragment","afterInsert","updateFn","undoneState","undo","getLastChangeType","DraftPasteProcessor","RichTextEditorUtil","splitTextIntoTextBlocks","clipboardData","isRichText","defaultFileText","handlePastedFiles","currentBlockType","getCurrentBlockType","processText","withInsertedText","textBlocks","html","getHTML","formatPastedText","_editor$props$formatP","handlePastedText","_html","internalClipboard","getClipboard","types","includes","every","areTextBlocksAndClipboardEqual","htmlFragment","processHTML","contentBlocks","htmlMap","textFragment","textMap","convertFromHTMLToContentBlocks","getSafeBodyFromHTML","sanitizeDraftText","textLine","blockNodeConfig","prevSiblingIndex","URI","uri","_uri","adjustment","maxDepth","NEWLINE_REGEX","unstable_flushControlled","id","DraftStringKey","encodeEntityRanges","encodeInlineStyleRanges","createRawBlock","entityStorageMap","inlineStyleRanges","toObject","insertRawBlock","rawBlocks","blockCacheRef","rawBlock","rawDraftContentState","rawState","entityCacheRef","entityStorageKey","stringifiedEntityKey","encodeRawBlocks","rawEntityMap","unstringify","encodeRawEntityMap","strlen","storageMap","encoded","Number","isTruthy","EMPTY_ARRAY","styleList","flatten","toSet","styleToEncode","filteredInlines","getEncodedInlinesForType","ContentState","DraftEntity","DraftTreeAdapter","SelectionState","createCharacterList","decodeEntityRanges","decodeInlineStyleRanges","decodeBlockNodeConfig","decodeCharacterList","rawEntityRanges","rawInlineStyleRanges","addKeyIfMissing","updateNodeStack","stack","parentRef","nodesWithParentRef","decodeRawBlocks","isTreeRawBlock","fromRawStateToRawTreeState","contentBlockNode","siblings","_index","isValidBlock","_children","_contentBlockNode","decodeContentBlockNodes","decodeContentBlocks","fromRawTreeStateToRawState","rawEntityKey","_rawEntityMap$rawEnti","__create","decodeRawEntityMap","createEmpty","isListBlock","draftTreeState","transformedBlocks","fn","traverseInDepthOrder","addDepthToChildren","draftState","parentStack","isList","treeBlock","lastParent","unshift","DraftTreeInvariants","isConnectedTree","eligibleFirstNodes","nodesSeen","currentKey","visitedStack","childKeys","_firstNode","isValidTree","entities","characterArray","substr","OrderedSet","EMPTY_SET","styles","cursor","getRangeBoundingClientRect","boundingRect","_rects$","_rects$2","BitByte","RSBlock","BitBuffer","Polynomial","QRCode","typeNumber","errorCorrectLevel","modules","moduleCount","dataCache","dataList","proto","addData","newData","isDark","row","col","getModuleCount","make","rsBlocks","getRSBlocks","buffer","totalDataCount","dataCount","put","getLengthInBits","write","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","pattern","lostPoint","getLostPoint","createMovieClip","target_mc","instance_name","qr_mc","createEmptyMovieClip","beginFill","moveTo","lineTo","endFill","pos","getPatternPosition","bits","getBCHTypeNumber","floor","getBCHTypeInfo","inc","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","putBit","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","rsPoly","getErrorCorrectPolynomial","modPoly","modIndex","totalCodeCount","QR8bitByte","charCodeAt","ECL","QRRSBlock","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","list","QRBitBuffer","bufIndex","bit","Mode","QRMaskPattern","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","qrCode","sameCount","darkCount","useMediaQuery","queryInput","theme","useTheme","getThemeProps","query","supportMatchMedia","matchMedia","_props$options","_props$options$defaul","defaultMatches","_props$options$matchM","_props$options$noSsr","noSsr","_props$options$ssrMat","ssrMatchMedia","_React$useState","setMatch","active","queryList","updateMatch","addListener","removeListener","TableCell","_props$align","align","classes","paddingProp","padding","scopeProp","scope","sizeProp","sortDirection","variantProp","variant","_objectWithoutProperties","table","TableContext","tablelvl2","Tablelvl2Context","isHeadCell","ariaSort","clsx","capitalize","stickyHeader","withStyles","typography","body2","verticalAlign","borderBottom","palette","lighten","fade","divider","darken","textAlign","color","primary","pxToRem","fontWeightMedium","footer","secondary","sizeSmall","paddingRight","paddingLeft","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","flexDirection","alignJustify","zIndex","backgroundColor","background","TableContainer","_props$component","overflowX","Table","_props$padding","_props$size","_props$stickyHeader","Provider","borderCollapse","borderSpacing","spacing","captionSide","TableHead","TableRow","_props$hover","hover","_props$selected","selected","action","main","selectedOpacity","TableBody","DialogTitle","_props$disableTypogra","disableTypography","Typography","margin","flex","Fab","_props$color","_props$disabled","disabled","_props$disableFocusRi","disableFocusRipple","focusVisibleClassName","_props$variant","ButtonBase","extended","colorInherit","focusRipple","focusVisible","label","button","boxSizing","minHeight","transition","transitions","duration","short","borderRadius","minWidth","boxShadow","shadows","getContrastText","grey","A100","disabledBackground","textDecoration","alignItems","justifyContent","contrastText","sizeMedium","createSvgIcon","isWidthUp","breakpoint","inclusive","breakpointKeys","isWidthDown","useEnhancedEffect","withWidth","_options$withTheme","withTheme","withThemeOption","_options$noSSR","noSSR","initialWidthOption","initialWidth","WithWidth","contextTheme","_getThemeProps","mountedState","setMountedState","widthComputed","breakpoints","output","up","more","hoistNonReactStatics","HiddenJs","only","visible","_i","_breakpoint","breakpointUp","breakpointDown","propTypes","PropTypes","implementation","oneOf","lgDown","bool","lgUp","mdDown","mdUp","oneOfType","arrayOf","smDown","smUp","isRequired","xlDown","xlUp","xsDown","xsUp","hidden","down","Hidden","_props$implementation","_props$lgDown","_props$lgUp","_props$mdDown","_props$mdUp","_props$smDown","_props$smUp","_props$xlDown","_props$xlUp","_props$xsDown","_props$xsUp","HiddenCss","SLICE$0","createClass","ctor","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","IndexedIterable","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","Set","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","SetRef","OwnerID","arrCopy","arr","newArr","ensureSize","iter","__iterate","wrapIndex","uint32Index","NaN","wholeSlice","begin","resolveBegin","resolveIndex","resolveEnd","defaultIndex","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","REAL_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","seq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","ArraySeq","_array","_object","_keys","IterableSeq","_iterable","IteratorSeq","_iteratorCache","isSeq","maybeSeq","seqIterate","useKeys","_cache","maxIndex","entry","__iterateUncached","seqIterator","__iteratorUncached","json","converter","fromJSWith","parentJSON","isPlainObj","fromJSDefault","toMap","valueA","valueB","equals","deepEqual","__hash","notAssociative","entries","flipped","cacheResult","allEqual","bSize","times","_value","condition","error","Range","step","_start","_end","ceil","Collection","KeyedCollection","IndexedCollection","SetCollection","KEYS","VALUES","ENTRIES","inspect","toSource","__toString","__iterator","notSetValue","iterations","val","searchValue","lastIndexOf","this$0","possibleIndex","offsetValue","imul","smi","i32","hash","o","h","STRING_HASH_CACHE_MIN_STRLEN","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","hashCode","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","uniqueID","getIENodeHash","objHashUID","isExtensible","hashJSObj","WeakMap","assertNotInfinite","emptyMap","isMap","maybeMap","IS_MAP_SENTINEL","_root","updateMap","keyPath","updateIn","deleteIn","updater","updatedValue","updateInDeepMap","existing","keyPathIter","isNotSet","existingValue","newValue","nextExisting","nextUpdated","forceIterator","clear","__ownerID","__altered","mergeIntoMapWith","mergeWith","merger","iters","mergeIn","m","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","sort","comparator","sortFactory","sortBy","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","HashArrayMapNode","HashCollisionNode","keyHash","ValueNode","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","prev","__prev","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","SIZE","idx2","iterables","mergeIntoCollectionWith","nextValue","collection","mergeIntoMap","popCount","idx","canEdit","newArray","removeIn","removed","exists","MAX_ARRAY_MAP_SIZE","createNodes","isEditable","newEntries","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","expandNodes","newBitmap","newNodes","newLen","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","keyMatch","subNode","empty","emptyList","makeList","VNode","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","insert","values","oldSize","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","tailPos","iterateNodeOrLeaf","from","to","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","maxSize","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","_map","_list","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","indexed","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","mappedSequence","reverseFactory","filterFactory","predicate","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","singleton","concatSeq","sum","flattenFactory","flatSequence","stopped","flatDeep","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","s","reify","validateEntry","resolveSize","iterableClass","defaultValues","hasInitialized","RecordType","names","setProp","bind","setProps","RecordTypePrototype","_name","_defaultValues","RecordPrototype","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","record","getPrototypeOf","emptySet","isSet","maybeSet","IS_SET_SENTINEL","fromKeys","updateSet","union","intersect","originalSet","subtract","__make","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Stack","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","_head","peek","makeStack","pushAll","EMPTY_STACK","StackPrototype","mixin","methods","keyCopier","__toJS","toJSON","toOrderedSet","toStack","__toStringMapper","returnValue","findEntry","found","findLastEntry","sideEffect","separator","joined","isFirst","reducer","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","findLast","flatMap","coerce","flatMapFactory","searchKey","searchKeyPath","nested","groupBy","isKeyedIter","groupByFactory","hasIn","isSubset","isSuperset","keyMapper","maxBy","neg","defaultNegComparator","minBy","amount","skipLast","skipWhile","take","takeLast","takeSequence","iterating","takeWhileFactory","ordered","keyed","murmurHashOfSize","hashMerge","hashIterable","IterablePrototype","quoteString","chain","noLengthWarning","console","warn","findKey","findLastKey","keyOf","lastKeyOf","mapEntries","mapKeys","KeyedIterablePrototype","defaultZipper","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","zipWith","factory","validateFormat","format","argIndex","framesToPop","EditorStateRecord","allowUndo","inlineStyleOverride","lastChangeType","redoStack","treeMap","undoStack","createWithText","createWithContent","createFromText","firstKey","config","recordConfig","generateNewTreeMap","getImmutable","existingDecorator","newTreeMap","previousTreeMap","regenerateTreeForNewDecorator","newBlockMap","newEntityMap","prevBlockMap","regenerateTreeForNewBlocks","getEntityMap","immutable","_immutable","getAllowUndo","getUndoStack","getRedoStack","getInlineStyleOverride","setInlineStyleOverride","override","lookUpwardForInlineStyle","getInlineStyleForCollapsedSelection","getInlineStyleForNonCollapsedSelection","isSelectionAtStartOfContent","hasEdgeWithin","isSelectionAtEndOfContent","updateSelection","moveSelectionToEnd","lastBlock","getLastBlock","lastKey","moveFocusToEnd","afterSelectionMove","mustBecomeBoundary","getSelectionBefore","overrideChangeTypes","editorStateChanges","newCurrentContent","fromKey","lastNonEmpty","applyEntityToContentState","getCharacterRemovalRange","insertFragmentIntoContentState","insertTextIntoContentState","removeEntitiesAtEdges","removeRangeFromContentState","splitBlockInContentState","rangeToReplace","withoutEntities","withoutText","rangeToRemove","removalDirection","adjustedRemovalRange","applyInlineStyle","removeInlineStyle","setBlockData","blockData","UserAgentData","mapObject","memoizeStringOnly","normalizer","startsWith","normalizePlatformVersion","isBrowserArchitecture","isDevice","isPlatform","isPlatformArchitecture","_require","defaultRecord","_CharacterMetadataRec","hasStyle","withStyle","withoutStyle","withEntity","EMPTY","configMap","pool","newCharacter","haveEqualStyle","charA","charB","haveEqualEntity","decorateCharacterList","findStyleRanges","filterFn","seenKeys","MULTIPLIER","pow","_offsetKey$split$reve","__DRAFT_GKX","_ContentBlockRecord","classNames","SURROGATE_UNITS_REGEX","isCodeUnitInSurrogateRange","codeUnit","hasSurrogateUnit","posA","posB","substring","getCodePoints","codePoints","codePointAt","second","_typeof","assign","enumerableOnly","symbols","getOwnPropertyDescriptors","defineProperties","sourceSymbolKeys","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_possibleConstructorReturn","_getPrototypeOf","setPrototypeOf","_inherits","_setPrototypeOf","QRCodeImpl","ErrorCorrectLevel","convertStr","out","charcode","fromCharCode","DEFAULT_PROPS","bgColor","fgColor","includeMargin","generatePath","ops","cell","excavateModules","excavation","w","getImageSettings","cells","imageSettings","numCells","defaultSize","scale","excavate","floorX","floorY","SUPPORTS_PATH2D","Path2D","addPath","QRCodeCanvas","_React$PureComponent","_getPrototypeOf2","imgLoaded","_image","complete","handleImageLoad","_this$props$imageSett","_nextProps$imageSetti","src","qrcode","_canvas","canvas","ctx","getContext","calculatedImageSettings","pixelRatio","devicePixelRatio","fillStyle","fillRect","rdx","cdx","drawImage","otherProps","canvasStyle","img","imgSrc","onLoad","Fragment","_ref2","PureComponent","QRCodeSVG","_React$PureComponent2","_this$props3","image","xlinkHref","preserveAspectRatio","fgPath","shapeRendering","viewBox","renderAs","defaultProps","haystack","areEqualFn","foundFn","nextIndex","HTMLElement","anchorBlock","anchorBlockSibling","blockKeys","startIndex","endIndex","DraftEntityInstance","uuid","instances","instanceKey","logWarning","oldMethodCall","newMethodCall","getLastCreatedEntityKey","__getLastCreatedEntityKey","__add","__getAll","__loadWithEntities","mergeData","toMerge","__mergeData","replaceData","__replaceData","newInstance","_SelectionStateRecord","serialize","offsetToCheck","globalDir","getHTMLDir","setGlobalDir","NEUTRAL","LTR","RTL","otherDir","initGlobalDir","getSelectionOffsetKeyForNode","searchNode","BACKSPACE","ALT","PAGE_UP","PAGE_DOWN","END","HOME","DELETE","COMMA","PERIOD","A","Z","ZERO","NUMPAD_0","NUMPAD_9","_isNodeScrollable","overflow","parentWindow","getDocumentScrollElement","getUnboundedScrollPosition","documentScrollElement","viewport","xMax","scrollWidth","clientWidth","yMax","scrollHeight","clientHeight","RawDraftContentState","convertFromDraftStateToRaw","convertFromRawToDraftState","getVisibleSelectionRect","DraftPublic","Editor","EditorBlock","CompositeDecorator","Entity","EntityInstance","Modifier","RichUtils","convertFromHTML","convertFromRaw","convertToRaw","genKey","ImmutableMap","ContentStateRecord","ContentBlockNodeRecord","_ContentStateRecord","getKeyBefore","getFirstBlock","getPlainText","delimiter","escape","createEntity","mergeEntityData","replaceEntityData","addEntity","getAllEntities","loadWithEntities","createFromBlockArray","theBlocks","strings","createContentBlockFromJS","RANGE_BY_BIDI_TYPE","REGEX_STRONG","RegExp","REGEX_RTL","firstStrongChar","firstStrongCharDir","strongChar","resolveBlockDir","fallback","blockDir","strongFallback","isDirectionLTR","isDirectionRTL","section","article","blockquote","atomic","unstyled","aliasedElements","filterKey","isTextNode","outerNode","innerNode","compareDocumentPosition","_isViewportScrollElement","newTop","getLeft","setLeft","newLeft","maxDistance","keyBefore","warning","isSoftNewlineEvent","isOSX","isCtrlKeyCommand","ctrlKey","altKey","usesMacOSHeuristics","hasCommandModifier","metaKey","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","handle","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","onGlobalMessage","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","onreadystatechange","installReadyStateChangeImplementation","task","clearImmediate","run","lastRootBlock","newKeysRef","oldKey","nextKey","prevKey","childrenKeys","randomizeContentBlockNodeKeys","randomizeContentBlockKeys","removeForBlock","charBefore","charAfter","entityBeforeCursor","entityAfterCursor","_getRemovalRange","updatedBlocks","updatedStart","updatedEnd","targetListArg","toInsert","operation","nextNonDescendantBlock","_DraftEntityInstanceR","REGEX_BLOCK_DELIMITER","input","BOLD","CODE","ITALIC","STRIKETHROUGH","UNDERLINE","getAttribute","childOffsetKey","logBlockedSelectionEvent","stacktrace","documentSelection","updatedSelectionState","needsRecovery","getPointForNonTextNode","editorRoot","startNode","childOffset","firstLeaf","getFirstLeaf","nodeBeforeCursor","lastChild","getLastLeaf","getTextContentLength","anchorIsTextNode","focusIsTextNode","anchorPoint","focusPoint","anchorPath","anchorBlockKey","anchorLeafBlockTree","anchorLeaf","focusPath","focusBlockKey","focusLeafBlockTree","focusLeaf","anchorLeafStart","focusLeafStart","anchorBlockOffset","focusBlockOffset","anchorLeafEnd","focusLeafEnd","isHTMLBRElement","_setSelection","targetNode","leafNode","styleObj","styleName","mergedStyles","newStyles","getElementRect","getViewportWidth","getViewportHeight","innerWidth","innerHeight","withoutScrollbars","_renderChildren","commonProps","_this3","createArrayFromMixed","emptyFunction","CR_LF_REGEX","RICH_TEXT_TYPES","getFileFromDataTransfer","item","kind","getAsFile","isLink","getLink","items","getCount","mozItemCount","thatReturnsArgument","hasFiles","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","TEXT_CLIPPING_REGEX","TEXT_TYPES","readCount","file","FileReader","_contents","reader","onload","onerror","readAsText","readFile","charBehind","tempRange","clientRects","ancestor","atCommonAncestor","commonAncestorContainer","getClientRects","setEndBefore","WHITESPACE_AND_PUNCTUATION","DELETE_REGEX","BACKSPACE_REGEX","getRemovableWord","_knownListItemDepthCl","isHTMLAnchorElement","isHTMLImageElement","REGEX_CR","REGEX_LF","REGEX_LEADING_LF","REGEX_NBSP","REGEX_CARRIAGE","REGEX_ZWS","boldValues","notBoldValues","anchorAttr","imgAttr","knownListItemDepthClasses","HTMLTagToRawInlineStyleMap","code","del","em","strike","strong","u","mark","buildBlockTypeMap","blockTypeMap","desc","elements","detectInlineStyle","getListItemDepth","depthClass","classList","isValidAnchor","href","protocol","isValidImage","imageNode","getNamedItem","styleFromNodeAttributes","htmlElement","isListNode","ContentBlocksBuilder","disambiguate","blockConfigs","currentEntity","currentText","addDOMNode","_this$blockConfigs","_toBlockConfigs","_trimCurrentText","_makeBlockConfig","getContentBlocks","_toContentBlocks","_toFlatContentBlocks","childConfigs","wasCurrentDepth","wasWrapper","_addImgNode","_addAnchorNode","newStyle","_addBreakNode","_addTextNode","_wasCurrentDepth","_wasWrapper","_appendText","_this$characterList","l","trimLeft","trimRight","entityConfig","attr","imageAttribute","anchor","anchorAttribute","url","_hoistContainersInBlockConfigs","blockConfig","_this2$_extractTextFr","_extractTextFromBlockConfigs","DOMBuilder","safeBody","tag","isOldIE","createHTMLDocument","innerHTML","getElementsByTagName","adjustBlockDepthForContentState","currentBlockContainsLink","getDataObjectForLinkURL","eventTimeStamp","toggleInlineStyle","toggleCode","onBackspace","onDelete","insertSoftNewline","withoutAtomicBlock","withoutBlockStyle","tryToRemoveBlockStyle","atomicBlockTarget","onTab","shiftKey","withAdjustment","toggleBlockType","typeToSet","toggleLink","withoutLink","shouldFixFirefoxMovement","shouldRemoveWord","getZCommand","getDeleteCommand","getBackspaceCommand","t","f","g","delete","N","S","E","C","SUPERSCRIPT","SUBSCRIPT","D","I","bgcolor","O","T","z","toStringTag","__esModule","chunk","inlines","ins","sub","sup","marginLeft","HTMLAnchorElement","dataset","mention","title","targetOption","HTMLImageElement","alt","float","alignment","HTMLVideoElement","HTMLIFrameElement","fuzzyLink","fuzzyEmail","fuzzyIP","validate","re","http","src_auth","src_host_port_strict","src_path","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","__opts__","__tlds__","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","__compiled__","__schemas__","link","normalize","schema_test","src_ZPCc","schema_search","pretest","__index__","__text_cache__","__last_index__","schema","__schema__","raw","testSchemaAt","search","tlds","resetWarningCache","symbol","any","elementType","instanceOf","objectOf","shape","exact","checkPropTypes","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","callBacks","suggestionCallback","editorFlag","suggestionFlag","closeAllModals","init","getElementById","onEditorClick","closeModals","registerCallBack","deregisterCallBack","setSuggestionCallback","removeSuggestionCallback","onSuggestionClick","inputFocused","editorMouseDown","onEditorMouseDown","editorFocused","onInputMouseDown","isEditorBlur","isEditorFocused","isToolbarFocused","isInputFocused","stopPropagation","icon","onClick","activeClassName","P","U","Y","F","highlighted","toggleExpansion","setHighlighted","doExpand","doCollapse","expanded","optionWrapperClassName","onExpandEvent","Children","R","B","W","G","resetHighlighted","disabledClassName","highlightedClassName","onMouseEnter","onMouseLeave","J","V","K","X","currentState","translations","dropdownClassName","inDropdown","renderInDropDown","renderInFlatList","ee","te","oe","ie","ne","signalExpanded","expandCollapse","changeKeys","modalHandler","currentStyles","getSelectionInlineStyle","ae","ce","se","ue","pe","le","getBlockTypes","displayName","blockTypes","renderInDropdown","renderFlat","de","me","fe","ye","he","Me","ge","blocksTypes","getSelectedBlocksType","be","je","Ne","Se","Ee","Ce","Le","defaultFontSize","getElementsByClassName","ke","De","we","xe","Ie","ve","toggleFontSize","toggleCustomInlineStyle","currentFontSize","getSelectionCustomInlineStyle","FONTSIZE","Oe","Ae","Te","ze","_e","Pe","defaultFontFamily","Ue","Ye","Fe","Be","Qe","He","Re","toggleFontFamily","currentFontFamily","FONTFAMILY","Ze","We","Ge","Je","Ve","qe","indent","outdent","listType","indentDisabled","outdentDisabled","unordered","Ke","Xe","et","tt","nt","$e","adjustDepth","changeDepth","isIndentDisabled","currentBlock","getBlockBeforeSelectedBlock","isOutdentDisabled","getSelectedBlock","ot","rt","it","at","ct","lt","center","justify","st","ut","dt","mt","ft","pt","addBlockAlignmentData","currentTextAlignment","getSelectedBlocksMetadata","gt","yt","ht","Mt","bt","jt","setCurrentStyleColor","setCurrentStyleBgcolor","renderModal","popupClassName","colors","Nt","St","Et","Lt","kt","Dt","Ct","currentColor","currentBgColor","toggleColor","COLOR","BGCOLOR","vt","wt","xt","It","Ot","At","Tt","zt","_t","showModal","linkTarget","linkTitle","linkTargetOption","defaultTargetOption","removeLink","addLink","updateValue","updateTargetOption","checked","hideModal","signalExpandShowModal","selectionText","forceExpandAndShowModal","htmlFor","defaultChecked","unlink","renderAddLinkModal","Pt","Ut","Yt","Rt","Bt","Qt","Ht","Zt","Wt","Gt","Ft","linkCallback","getCurrentValues","getEntityRange","getSelectionText","getSelectionEntity","Jt","Vt","qt","Kt","Xt","$t","en","embeddedLink","rendeEmbeddedLinkModal","tn","nn","on","rn","an","cn","ln","addEmbeddedLink","embedCallback","sn","un","pn","dn","mn","gn","emojis","renderEmojiModal","yn","hn","Mn","bn","jn","Nn","Sn","addEmoji","onCollpase","closeModal","En","Cn","Ln","kn","Dn","vn","wn","dragEnter","uploadHighlighted","uploadEnabled","uploadCallback","showImageLoading","onImageDrop","uploadImage","showImageUploadOption","addImageFromState","showImageURLOption","toggleShowImageLoading","selectImage","then","fileUpload","catch","fileUploadClick","urlEnabled","previewImage","inputAccept","accept","present","mandatory","renderAddImageModal","xn","In","On","Tn","zn","_n","An","addImage","Pn","Un","Yn","Fn","Rn","Bn","Qn","Hn","Zn","removeInlineStyles","removeAllInlineStyles","Wn","Gn","Jn","Vn","qn","Kn","undoDisabled","redoDisabled","Xn","$n","no","oo","eo","ro","inline","colorPicker","embedded","emoji","history","io","ao","co","lo","so","uo","po","showOpenOptionOnHover","showPopOver","openLink","open","toggleShowPopOver","mo","getMentionComponent","getMentionDecorator","findMentionEntities","fo","go","yo","ho","Mo","bo","jo","No","findSuggestionEntities","getEditorState","trigger","getSuggestions","caseSensitive","getSuggestionComponent","activeOption","showSuggestions","onEditorKeyDown","filteredSuggestions","addMention","onOptionMouseEnter","onOptionMouseLeave","setSuggestionReference","suggestion","setDropdownReference","dropdown","closeSuggestionDropdown","filterSuggestions","getWrapperRef","optionClassName","getSuggestionDecorator","Eo","getHashtagComponent","findHashtagEntities","hashCharacter","getHashtagDecorator","Co","frameBorder","allowFullScreen","ko","Do","vo","wo","xo","Io","Oo","hovered","setEntityAlignmentLeft","setEntityAlignment","setEntityAlignmentRight","setEntityAlignmentCenter","dummy","toggleHovered","isReadOnly","isImageAlignmentEnabled","renderAlignmentOptions","To","bold","italic","underline","strikethrough","monospace","superscript","subscript","alignmentEnabled","zo","fr","zh","ru","nl","da","zh_tw","pl","es","ja","_o","Po","Uo","Yo","Fo","Ro","Bo","Ho","Zo","Wo","Qo","onEditorBlur","onEditorFocus","focusHandler","onToolbarFocus","onWrapperBlur","onEditorStateChange","wrapperId","afterChange","setWrapperReference","setEditorReference","getCompositeDecorator","customDecorators","mentionClassName","So","hashtag","Lo","suggestions","onContentStateChange","toolbar","createEditorState","defaultEditorState","defaultContentState","initialContentState","filterEditorProps","getStyleMap","getCustomStyleMap","changeEditorState","focusEditor","handleNewLine","handlePastedTextFn","Ao","customBlockRenderFunc","editorProps","compositeDecorator","extractInlineStyle","locale","localization","toolbarCustomButtons","toolbarOnFocus","toolbarClassName","toolbarHidden","editorClassName","wrapperClassName","toolbarStyle","editorStyle","wrapperStyle","visibility","onMouseDown","ariaHasPopup","Go","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","isEqual","lastResult","calledOnce","newArgs"],"mappings":"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","file":"static/js/0.ecead01c.chunk.js","sourcesContent":["/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"path\", {\n  d: \"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n}), 'InfoOutlined');\n\nexports.default = _default;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar moveBlockInContentState = require(\"./moveBlockInContentState\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar List = Immutable.List,\n    Repeat = Immutable.Repeat;\nvar AtomicBlockUtils = {\n  insertAtomicBlock: function insertAtomicBlock(editorState, entityKey, character) {\n    var contentState = editorState.getCurrentContent();\n    var selectionState = editorState.getSelection();\n    var afterRemoval = DraftModifier.removeRange(contentState, selectionState, 'backward');\n    var targetSelection = afterRemoval.getSelectionAfter();\n    var afterSplit = DraftModifier.splitBlock(afterRemoval, targetSelection);\n    var insertionTarget = afterSplit.getSelectionAfter();\n    var asAtomicBlock = DraftModifier.setBlockType(afterSplit, insertionTarget, 'atomic');\n    var charData = CharacterMetadata.create({\n      entity: entityKey\n    });\n    var atomicBlockConfig = {\n      key: generateRandomKey(),\n      type: 'atomic',\n      text: character,\n      characterList: List(Repeat(charData, character.length))\n    };\n    var atomicDividerBlockConfig = {\n      key: generateRandomKey(),\n      type: 'unstyled'\n    };\n\n    if (experimentalTreeDataSupport) {\n      atomicBlockConfig = _objectSpread({}, atomicBlockConfig, {\n        nextSibling: atomicDividerBlockConfig.key\n      });\n      atomicDividerBlockConfig = _objectSpread({}, atomicDividerBlockConfig, {\n        prevSibling: atomicBlockConfig.key\n      });\n    }\n\n    var fragmentArray = [new ContentBlockRecord(atomicBlockConfig), new ContentBlockRecord(atomicDividerBlockConfig)];\n    var fragment = BlockMapBuilder.createFromArray(fragmentArray);\n    var withAtomicBlock = DraftModifier.replaceWithFragment(asAtomicBlock, insertionTarget, fragment);\n    var newContent = withAtomicBlock.merge({\n      selectionBefore: selectionState,\n      selectionAfter: withAtomicBlock.getSelectionAfter().set('hasFocus', true)\n    });\n    return EditorState.push(editorState, newContent, 'insert-fragment');\n  },\n  moveAtomicBlock: function moveAtomicBlock(editorState, atomicBlock, targetRange, insertionMode) {\n    var contentState = editorState.getCurrentContent();\n    var selectionState = editorState.getSelection();\n    var withMovedAtomicBlock;\n\n    if (insertionMode === 'before' || insertionMode === 'after') {\n      var targetBlock = contentState.getBlockForKey(insertionMode === 'before' ? targetRange.getStartKey() : targetRange.getEndKey());\n      withMovedAtomicBlock = moveBlockInContentState(contentState, atomicBlock, targetBlock, insertionMode);\n    } else {\n      var afterRemoval = DraftModifier.removeRange(contentState, targetRange, 'backward');\n      var selectionAfterRemoval = afterRemoval.getSelectionAfter();\n\n      var _targetBlock = afterRemoval.getBlockForKey(selectionAfterRemoval.getFocusKey());\n\n      if (selectionAfterRemoval.getStartOffset() === 0) {\n        withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'before');\n      } else if (selectionAfterRemoval.getEndOffset() === _targetBlock.getLength()) {\n        withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'after');\n      } else {\n        var afterSplit = DraftModifier.splitBlock(afterRemoval, selectionAfterRemoval);\n        var selectionAfterSplit = afterSplit.getSelectionAfter();\n\n        var _targetBlock2 = afterSplit.getBlockForKey(selectionAfterSplit.getFocusKey());\n\n        withMovedAtomicBlock = moveBlockInContentState(afterSplit, atomicBlock, _targetBlock2, 'before');\n      }\n    }\n\n    var newContent = withMovedAtomicBlock.merge({\n      selectionBefore: selectionState,\n      selectionAfter: withMovedAtomicBlock.getSelectionAfter().set('hasFocus', true)\n    });\n    return EditorState.push(editorState, newContent, 'move-block');\n  }\n};\nmodule.exports = AtomicBlockUtils;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar _require = require(\"immutable\"),\n    Map = _require.Map;\n\nvar ContentStateInlineStyle = {\n  add: function add(contentState, selectionState, inlineStyle) {\n    return modifyInlineStyle(contentState, selectionState, inlineStyle, true);\n  },\n  remove: function remove(contentState, selectionState, inlineStyle) {\n    return modifyInlineStyle(contentState, selectionState, inlineStyle, false);\n  }\n};\n\nfunction modifyInlineStyle(contentState, selectionState, inlineStyle, addOrRemove) {\n  var blockMap = contentState.getBlockMap();\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var newBlocks = blockMap.skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).concat(Map([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n    var sliceStart;\n    var sliceEnd;\n\n    if (startKey === endKey) {\n      sliceStart = startOffset;\n      sliceEnd = endOffset;\n    } else {\n      sliceStart = blockKey === startKey ? startOffset : 0;\n      sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n    }\n\n    var chars = block.getCharacterList();\n    var current;\n\n    while (sliceStart < sliceEnd) {\n      current = chars.get(sliceStart);\n      chars = chars.set(sliceStart, addOrRemove ? CharacterMetadata.applyStyle(current, inlineStyle) : CharacterMetadata.removeStyle(current, inlineStyle));\n      sliceStart++;\n    }\n\n    return block.set('characterList', chars);\n  });\n  return contentState.merge({\n    blockMap: blockMap.merge(newBlocks),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = ContentStateInlineStyle;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar applyEntityToContentBlock = require(\"./applyEntityToContentBlock\");\n\nvar Immutable = require(\"immutable\");\n\nfunction applyEntityToContentState(contentState, selectionState, entityKey) {\n  var blockMap = contentState.getBlockMap();\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var newBlocks = blockMap.skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).toOrderedMap().merge(Immutable.OrderedMap([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n    var sliceStart = blockKey === startKey ? startOffset : 0;\n    var sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n    return applyEntityToContentBlock(block, sliceStart, sliceEnd, entityKey);\n  });\n  return contentState.merge({\n    blockMap: blockMap.merge(newBlocks),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = applyEntityToContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nfunction applyEntityToContentBlock(contentBlock, startArg, end, entityKey) {\n  var start = startArg;\n  var characterList = contentBlock.getCharacterList();\n\n  while (start < end) {\n    characterList = characterList.set(start, CharacterMetadata.applyEntity(characterList.get(start), entityKey));\n    start++;\n  }\n\n  return contentBlock.set('characterList', characterList);\n}\n\nmodule.exports = applyEntityToContentBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEntitySegments = require(\"./DraftEntitySegments\");\n\nvar getRangesForDraftEntity = require(\"./getRangesForDraftEntity\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Given a SelectionState and a removal direction, determine the entire range\n * that should be removed from a ContentState. This is based on any entities\n * within the target, with their `mutability` values taken into account.\n *\n * For instance, if we are attempting to remove part of an \"immutable\" entity\n * range, the entire entity must be removed. The returned `SelectionState`\n * will be adjusted accordingly.\n */\n\n\nfunction getCharacterRemovalRange(entityMap, startBlock, endBlock, selectionState, direction) {\n  var start = selectionState.getStartOffset();\n  var end = selectionState.getEndOffset();\n  var startEntityKey = startBlock.getEntityAt(start);\n  var endEntityKey = endBlock.getEntityAt(end - 1);\n\n  if (!startEntityKey && !endEntityKey) {\n    return selectionState;\n  }\n\n  var newSelectionState = selectionState;\n\n  if (startEntityKey && startEntityKey === endEntityKey) {\n    newSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, true, true);\n  } else if (startEntityKey && endEntityKey) {\n    var startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n    var endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n    newSelectionState = newSelectionState.merge({\n      anchorOffset: startSelectionState.getAnchorOffset(),\n      focusOffset: endSelectionState.getFocusOffset(),\n      isBackward: false\n    });\n  } else if (startEntityKey) {\n    var _startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n\n    newSelectionState = newSelectionState.merge({\n      anchorOffset: _startSelectionState.getStartOffset(),\n      isBackward: false\n    });\n  } else if (endEntityKey) {\n    var _endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n\n    newSelectionState = newSelectionState.merge({\n      focusOffset: _endSelectionState.getEndOffset(),\n      isBackward: false\n    });\n  }\n\n  return newSelectionState;\n}\n\nfunction getEntityRemovalRange(entityMap, block, selectionState, direction, entityKey, isEntireSelectionWithinEntity, isEntityAtStart) {\n  var start = selectionState.getStartOffset();\n  var end = selectionState.getEndOffset();\n\n  var entity = entityMap.__get(entityKey);\n\n  var mutability = entity.getMutability();\n  var sideToConsider = isEntityAtStart ? start : end; // `MUTABLE` entities can just have the specified range of text removed\n  // directly. No adjustments are needed.\n\n  if (mutability === 'MUTABLE') {\n    return selectionState;\n  } // Find the entity range that overlaps with our removal range.\n\n\n  var entityRanges = getRangesForDraftEntity(block, entityKey).filter(function (range) {\n    return sideToConsider <= range.end && sideToConsider >= range.start;\n  });\n  !(entityRanges.length == 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'There should only be one entity range within this removal range.') : invariant(false) : void 0;\n  var entityRange = entityRanges[0]; // For `IMMUTABLE` entity types, we will remove the entire entity range.\n\n  if (mutability === 'IMMUTABLE') {\n    return selectionState.merge({\n      anchorOffset: entityRange.start,\n      focusOffset: entityRange.end,\n      isBackward: false\n    });\n  } // For `SEGMENTED` entity types, determine the appropriate segment to\n  // remove.\n\n\n  if (!isEntireSelectionWithinEntity) {\n    if (isEntityAtStart) {\n      end = entityRange.end;\n    } else {\n      start = entityRange.start;\n    }\n  }\n\n  var removalRange = DraftEntitySegments.getRemovalRange(start, end, block.getText().slice(entityRange.start, entityRange.end), entityRange.start, direction);\n  return selectionState.merge({\n    anchorOffset: removalRange.start,\n    focusOffset: removalRange.end,\n    isBackward: false\n  });\n}\n\nmodule.exports = getCharacterRemovalRange;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Identify the range to delete from a segmented entity.\n *\n * Rules:\n *\n *  Example: 'John F. Kennedy'\n *\n *   - Deletion from within any non-whitespace (i.e. ['John', 'F.', 'Kennedy'])\n *     will return the range of that text.\n *\n *       'John F. Kennedy' -> 'John F.'\n *                  ^\n *\n *   - Forward deletion of whitespace will remove the following section:\n *\n *       'John F. Kennedy' -> 'John Kennedy'\n *            ^\n *\n *   - Backward deletion of whitespace will remove the previous section:\n *\n *       'John F. Kennedy' -> 'F. Kennedy'\n *            ^\n */\nvar DraftEntitySegments = {\n  getRemovalRange: function getRemovalRange(selectionStart, selectionEnd, text, entityStart, direction) {\n    var segments = text.split(' ');\n    segments = segments.map(function (\n    /*string*/\n    segment,\n    /*number*/\n    ii) {\n      if (direction === 'forward') {\n        if (ii > 0) {\n          return ' ' + segment;\n        }\n      } else if (ii < segments.length - 1) {\n        return segment + ' ';\n      }\n\n      return segment;\n    });\n    var segmentStart = entityStart;\n    var segmentEnd;\n    var segment;\n    var removalStart = null;\n    var removalEnd = null;\n\n    for (var jj = 0; jj < segments.length; jj++) {\n      segment = segments[jj];\n      segmentEnd = segmentStart + segment.length; // Our selection overlaps this segment.\n\n      if (selectionStart < segmentEnd && segmentStart < selectionEnd) {\n        if (removalStart !== null) {\n          removalEnd = segmentEnd;\n        } else {\n          removalStart = segmentStart;\n          removalEnd = segmentEnd;\n        }\n      } else if (removalStart !== null) {\n        break;\n      }\n\n      segmentStart = segmentEnd;\n    }\n\n    var entityEnd = entityStart + text.length;\n    var atStart = removalStart === entityStart;\n    var atEnd = removalEnd === entityEnd;\n\n    if (!atStart && atEnd || atStart && !atEnd) {\n      if (direction === 'forward') {\n        if (removalEnd !== entityEnd) {\n          removalEnd++;\n        }\n      } else if (removalStart !== entityStart) {\n        removalStart--;\n      }\n    }\n\n    return {\n      start: removalStart,\n      end: removalEnd\n    };\n  }\n};\nmodule.exports = DraftEntitySegments;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Obtain the start and end positions of the range that has the\n * specified entity applied to it.\n *\n * Entity keys are applied only to contiguous stretches of text, so this\n * method searches for the first instance of the entity key and returns\n * the subsequent range.\n */\n\n\nfunction getRangesForDraftEntity(block, key) {\n  var ranges = [];\n  block.findEntityRanges(function (c) {\n    return c.getEntity() === key;\n  }, function (start, end) {\n    ranges.push({\n      start: start,\n      end: end\n    });\n  });\n  !!!ranges.length ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Entity key not found in this range.') : invariant(false) : void 0;\n  return ranges;\n}\n\nmodule.exports = getRangesForDraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar List = Immutable.List;\n\nvar updateExistingBlock = function updateExistingBlock(contentState, selectionState, blockMap, fragmentBlock, targetKey, targetOffset) {\n  var mergeBlockData = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'REPLACE_WITH_NEW_DATA';\n  var targetBlock = blockMap.get(targetKey);\n  var text = targetBlock.getText();\n  var chars = targetBlock.getCharacterList();\n  var finalKey = targetKey;\n  var finalOffset = targetOffset + fragmentBlock.getText().length;\n  var data = null;\n\n  switch (mergeBlockData) {\n    case 'MERGE_OLD_DATA_TO_NEW_DATA':\n      data = fragmentBlock.getData().merge(targetBlock.getData());\n      break;\n\n    case 'REPLACE_WITH_NEW_DATA':\n      data = fragmentBlock.getData();\n      break;\n  }\n\n  var type = targetBlock.getType();\n\n  if (text && type === 'unstyled') {\n    type = fragmentBlock.getType();\n  }\n\n  var newBlock = targetBlock.merge({\n    text: text.slice(0, targetOffset) + fragmentBlock.getText() + text.slice(targetOffset),\n    characterList: insertIntoList(chars, fragmentBlock.getCharacterList(), targetOffset),\n    type: type,\n    data: data\n  });\n  return contentState.merge({\n    blockMap: blockMap.set(targetKey, newBlock),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: finalKey,\n      anchorOffset: finalOffset,\n      focusKey: finalKey,\n      focusOffset: finalOffset,\n      isBackward: false\n    })\n  });\n};\n/**\n * Appends text/characterList from the fragment first block to\n * target block.\n */\n\n\nvar updateHead = function updateHead(block, targetOffset, fragment) {\n  var text = block.getText();\n  var chars = block.getCharacterList(); // Modify head portion of block.\n\n  var headText = text.slice(0, targetOffset);\n  var headCharacters = chars.slice(0, targetOffset);\n  var appendToHead = fragment.first();\n  return block.merge({\n    text: headText + appendToHead.getText(),\n    characterList: headCharacters.concat(appendToHead.getCharacterList()),\n    type: headText ? block.getType() : appendToHead.getType(),\n    data: appendToHead.getData()\n  });\n};\n/**\n * Appends offset text/characterList from the target block to the last\n * fragment block.\n */\n\n\nvar updateTail = function updateTail(block, targetOffset, fragment) {\n  // Modify tail portion of block.\n  var text = block.getText();\n  var chars = block.getCharacterList(); // Modify head portion of block.\n\n  var blockSize = text.length;\n  var tailText = text.slice(targetOffset, blockSize);\n  var tailCharacters = chars.slice(targetOffset, blockSize);\n  var prependToTail = fragment.last();\n  return prependToTail.merge({\n    text: prependToTail.getText() + tailText,\n    characterList: prependToTail.getCharacterList().concat(tailCharacters),\n    data: prependToTail.getData()\n  });\n};\n\nvar getRootBlocks = function getRootBlocks(block, blockMap) {\n  var headKey = block.getKey();\n  var rootBlock = block;\n  var rootBlocks = []; // sometimes the fragment head block will not be part of the blockMap itself this can happen when\n  // the fragment head is used to update the target block, however when this does not happen we need\n  // to make sure that we include it on the rootBlocks since the first block of a fragment is always a\n  // fragment root block\n\n  if (blockMap.get(headKey)) {\n    rootBlocks.push(headKey);\n  }\n\n  while (rootBlock && rootBlock.getNextSiblingKey()) {\n    var lastSiblingKey = rootBlock.getNextSiblingKey();\n\n    if (!lastSiblingKey) {\n      break;\n    }\n\n    rootBlocks.push(lastSiblingKey);\n    rootBlock = blockMap.get(lastSiblingKey);\n  }\n\n  return rootBlocks;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockMap, targetBlock, fragmentHeadBlock) {\n  return blockMap.withMutations(function (blockMapState) {\n    var targetKey = targetBlock.getKey();\n    var headKey = fragmentHeadBlock.getKey();\n    var targetNextKey = targetBlock.getNextSiblingKey();\n    var targetParentKey = targetBlock.getParentKey();\n    var fragmentRootBlocks = getRootBlocks(fragmentHeadBlock, blockMap);\n    var lastRootFragmentBlockKey = fragmentRootBlocks[fragmentRootBlocks.length - 1];\n\n    if (blockMapState.get(headKey)) {\n      // update the fragment head when it is part of the blockMap otherwise\n      blockMapState.setIn([targetKey, 'nextSibling'], headKey);\n      blockMapState.setIn([headKey, 'prevSibling'], targetKey);\n    } else {\n      // update the target block that had the fragment head contents merged into it\n      blockMapState.setIn([targetKey, 'nextSibling'], fragmentHeadBlock.getNextSiblingKey());\n      blockMapState.setIn([fragmentHeadBlock.getNextSiblingKey(), 'prevSibling'], targetKey);\n    } // update the last root block fragment\n\n\n    blockMapState.setIn([lastRootFragmentBlockKey, 'nextSibling'], targetNextKey); // update the original target next block\n\n    if (targetNextKey) {\n      blockMapState.setIn([targetNextKey, 'prevSibling'], lastRootFragmentBlockKey);\n    } // update fragment parent links\n\n\n    fragmentRootBlocks.forEach(function (blockKey) {\n      return blockMapState.setIn([blockKey, 'parent'], targetParentKey);\n    }); // update targetBlock parent child links\n\n    if (targetParentKey) {\n      var targetParent = blockMap.get(targetParentKey);\n      var originalTargetParentChildKeys = targetParent.getChildKeys();\n      var targetBlockIndex = originalTargetParentChildKeys.indexOf(targetKey);\n      var insertionIndex = targetBlockIndex + 1;\n      var newChildrenKeysArray = originalTargetParentChildKeys.toArray(); // insert fragment children\n\n      newChildrenKeysArray.splice.apply(newChildrenKeysArray, [insertionIndex, 0].concat(fragmentRootBlocks));\n      blockMapState.setIn([targetParentKey, 'children'], List(newChildrenKeysArray));\n    }\n  });\n};\n\nvar insertFragment = function insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset) {\n  var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n  var newBlockArr = [];\n  var fragmentSize = fragment.size;\n  var target = blockMap.get(targetKey);\n  var head = fragment.first();\n  var tail = fragment.last();\n  var finalOffset = tail.getLength();\n  var finalKey = tail.getKey();\n  var shouldNotUpdateFromFragmentBlock = isTreeBasedBlockMap && (!target.getChildKeys().isEmpty() || !head.getChildKeys().isEmpty());\n  blockMap.forEach(function (block, blockKey) {\n    if (blockKey !== targetKey) {\n      newBlockArr.push(block);\n      return;\n    }\n\n    if (shouldNotUpdateFromFragmentBlock) {\n      newBlockArr.push(block);\n    } else {\n      newBlockArr.push(updateHead(block, targetOffset, fragment));\n    } // Insert fragment blocks after the head and before the tail.\n\n\n    fragment // when we are updating the target block with the head fragment block we skip the first fragment\n    // head since its contents have already been merged with the target block otherwise we include\n    // the whole fragment\n    .slice(shouldNotUpdateFromFragmentBlock ? 0 : 1, fragmentSize - 1).forEach(function (fragmentBlock) {\n      return newBlockArr.push(fragmentBlock);\n    }); // update tail\n\n    newBlockArr.push(updateTail(block, targetOffset, fragment));\n  });\n  var updatedBlockMap = BlockMapBuilder.createFromArray(newBlockArr);\n\n  if (isTreeBasedBlockMap) {\n    updatedBlockMap = updateBlockMapLinks(updatedBlockMap, blockMap, target, head);\n  }\n\n  return contentState.merge({\n    blockMap: updatedBlockMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: finalKey,\n      anchorOffset: finalOffset,\n      focusKey: finalKey,\n      focusOffset: finalOffset,\n      isBackward: false\n    })\n  });\n};\n\nvar insertFragmentIntoContentState = function insertFragmentIntoContentState(contentState, selectionState, fragmentBlockMap) {\n  var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n  !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should only be called with a collapsed selection state.') : invariant(false) : void 0;\n  var blockMap = contentState.getBlockMap();\n  var fragment = randomizeBlockMapKeys(fragmentBlockMap);\n  var targetKey = selectionState.getStartKey();\n  var targetOffset = selectionState.getStartOffset();\n  var targetBlock = blockMap.get(targetKey);\n\n  if (targetBlock instanceof ContentBlockNode) {\n    !targetBlock.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should not be called when a container node is selected.') : invariant(false) : void 0;\n  } // When we insert a fragment with a single block we simply update the target block\n  // with the contents of the inserted fragment block\n\n\n  if (fragment.size === 1) {\n    return updateExistingBlock(contentState, selectionState, blockMap, fragment.first(), targetKey, targetOffset, mergeBlockData);\n  }\n\n  return insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset);\n};\n\nmodule.exports = insertFragmentIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar Repeat = Immutable.Repeat;\n\nfunction insertTextIntoContentState(contentState, selectionState, text, characterMetadata) {\n  !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertText` should only be called with a collapsed range.') : invariant(false) : void 0;\n  var len = null;\n\n  if (text != null) {\n    len = text.length;\n  }\n\n  if (len == null || len === 0) {\n    return contentState;\n  }\n\n  var blockMap = contentState.getBlockMap();\n  var key = selectionState.getStartKey();\n  var offset = selectionState.getStartOffset();\n  var block = blockMap.get(key);\n  var blockText = block.getText();\n  var newBlock = block.merge({\n    text: blockText.slice(0, offset) + text + blockText.slice(offset, block.getLength()),\n    characterList: insertIntoList(block.getCharacterList(), Repeat(characterMetadata, len).toList(), offset)\n  });\n  var newOffset = offset + len;\n  return contentState.merge({\n    blockMap: blockMap.set(key, newBlock),\n    selectionAfter: selectionState.merge({\n      anchorOffset: newOffset,\n      focusOffset: newOffset\n    })\n  });\n}\n\nmodule.exports = insertTextIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n  if (!key) {\n    return;\n  }\n\n  var block = blockMap.get(key);\n\n  if (!block) {\n    return;\n  }\n\n  blockMap.set(key, func(block));\n};\n/**\n * Ancestors needs to be preserved when there are non selected\n * children to make sure we do not leave any orphans behind\n */\n\n\nvar getAncestorsKeys = function getAncestorsKeys(blockKey, blockMap) {\n  var parents = [];\n\n  if (!blockKey) {\n    return parents;\n  }\n\n  var blockNode = blockMap.get(blockKey);\n\n  while (blockNode && blockNode.getParentKey()) {\n    var parentKey = blockNode.getParentKey();\n\n    if (parentKey) {\n      parents.push(parentKey);\n    }\n\n    blockNode = parentKey ? blockMap.get(parentKey) : null;\n  }\n\n  return parents;\n};\n/**\n * Get all next delimiter keys until we hit a root delimiter and return\n * an array of key references\n */\n\n\nvar getNextDelimitersBlockKeys = function getNextDelimitersBlockKeys(block, blockMap) {\n  var nextDelimiters = [];\n\n  if (!block) {\n    return nextDelimiters;\n  }\n\n  var nextDelimiter = getNextDelimiterBlockKey(block, blockMap);\n\n  while (nextDelimiter && blockMap.get(nextDelimiter)) {\n    var _block = blockMap.get(nextDelimiter);\n\n    nextDelimiters.push(nextDelimiter); // we do not need to keep checking all root node siblings, just the first occurance\n\n    nextDelimiter = _block.getParentKey() ? getNextDelimiterBlockKey(_block, blockMap) : null;\n  }\n\n  return nextDelimiters;\n};\n\nvar getNextValidSibling = function getNextValidSibling(block, blockMap, originalBlockMap) {\n  if (!block) {\n    return null;\n  } // note that we need to make sure we refer to the original block since this\n  // function is called within a withMutations\n\n\n  var nextValidSiblingKey = originalBlockMap.get(block.getKey()).getNextSiblingKey();\n\n  while (nextValidSiblingKey && !blockMap.get(nextValidSiblingKey)) {\n    nextValidSiblingKey = originalBlockMap.get(nextValidSiblingKey).getNextSiblingKey() || null;\n  }\n\n  return nextValidSiblingKey;\n};\n\nvar getPrevValidSibling = function getPrevValidSibling(block, blockMap, originalBlockMap) {\n  if (!block) {\n    return null;\n  } // note that we need to make sure we refer to the original block since this\n  // function is called within a withMutations\n\n\n  var prevValidSiblingKey = originalBlockMap.get(block.getKey()).getPrevSiblingKey();\n\n  while (prevValidSiblingKey && !blockMap.get(prevValidSiblingKey)) {\n    prevValidSiblingKey = originalBlockMap.get(prevValidSiblingKey).getPrevSiblingKey() || null;\n  }\n\n  return prevValidSiblingKey;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, startBlock, endBlock, originalBlockMap) {\n  return blockMap.withMutations(function (blocks) {\n    // update start block if its retained\n    transformBlock(startBlock.getKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n        prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update endblock if its retained\n\n    transformBlock(endBlock.getKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n        prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update start block parent ancestors\n\n    getAncestorsKeys(startBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n      return transformBlock(parentKey, blocks, function (block) {\n        return block.merge({\n          children: block.getChildKeys().filter(function (key) {\n            return blocks.get(key);\n          }),\n          nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n          prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n        });\n      });\n    }); // update start block next - can only happen if startBlock == endBlock\n\n    transformBlock(startBlock.getNextSiblingKey(), blocks, function (block) {\n      return block.merge({\n        prevSibling: startBlock.getPrevSiblingKey()\n      });\n    }); // update start block prev\n\n    transformBlock(startBlock.getPrevSiblingKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: getNextValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update end block next\n\n    transformBlock(endBlock.getNextSiblingKey(), blocks, function (block) {\n      return block.merge({\n        prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n      });\n    }); // update end block prev\n\n    transformBlock(endBlock.getPrevSiblingKey(), blocks, function (block) {\n      return block.merge({\n        nextSibling: endBlock.getNextSiblingKey()\n      });\n    }); // update end block parent ancestors\n\n    getAncestorsKeys(endBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n      transformBlock(parentKey, blocks, function (block) {\n        return block.merge({\n          children: block.getChildKeys().filter(function (key) {\n            return blocks.get(key);\n          }),\n          nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n          prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n        });\n      });\n    }); // update next delimiters all the way to a root delimiter\n\n    getNextDelimitersBlockKeys(endBlock, originalBlockMap).forEach(function (delimiterKey) {\n      return transformBlock(delimiterKey, blocks, function (block) {\n        return block.merge({\n          nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n          prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n        });\n      });\n    }); // if parent (startBlock) was deleted\n\n    if (blockMap.get(startBlock.getKey()) == null && blockMap.get(endBlock.getKey()) != null && endBlock.getParentKey() === startBlock.getKey() && endBlock.getPrevSiblingKey() == null) {\n      var prevSiblingKey = startBlock.getPrevSiblingKey(); // endBlock becomes next sibling of parent's prevSibling\n\n      transformBlock(endBlock.getKey(), blocks, function (block) {\n        return block.merge({\n          prevSibling: prevSiblingKey\n        });\n      });\n      transformBlock(prevSiblingKey, blocks, function (block) {\n        return block.merge({\n          nextSibling: endBlock.getKey()\n        });\n      }); // Update parent for previous parent's children, and children for that parent\n\n      var prevSibling = prevSiblingKey ? blockMap.get(prevSiblingKey) : null;\n      var newParentKey = prevSibling ? prevSibling.getParentKey() : null;\n      startBlock.getChildKeys().forEach(function (childKey) {\n        transformBlock(childKey, blocks, function (block) {\n          return block.merge({\n            parent: newParentKey // set to null if there is no parent\n\n          });\n        });\n      });\n\n      if (newParentKey != null) {\n        var newParent = blockMap.get(newParentKey);\n        transformBlock(newParentKey, blocks, function (block) {\n          return block.merge({\n            children: newParent.getChildKeys().concat(startBlock.getChildKeys())\n          });\n        });\n      } // last child of deleted parent should point to next sibling\n\n\n      transformBlock(startBlock.getChildKeys().find(function (key) {\n        var block = blockMap.get(key);\n        return block.getNextSiblingKey() === null;\n      }), blocks, function (block) {\n        return block.merge({\n          nextSibling: startBlock.getNextSiblingKey()\n        });\n      });\n    }\n  });\n};\n\nvar removeRangeFromContentState = function removeRangeFromContentState(contentState, selectionState) {\n  if (selectionState.isCollapsed()) {\n    return contentState;\n  }\n\n  var blockMap = contentState.getBlockMap();\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var startBlock = blockMap.get(startKey);\n  var endBlock = blockMap.get(endKey); // we assume that ContentBlockNode and ContentBlocks are not mixed together\n\n  var isExperimentalTreeBlock = startBlock instanceof ContentBlockNode; // used to retain blocks that should not be deleted to avoid orphan children\n\n  var parentAncestors = [];\n\n  if (isExperimentalTreeBlock) {\n    var endBlockchildrenKeys = endBlock.getChildKeys();\n    var endBlockAncestors = getAncestorsKeys(endKey, blockMap); // endBlock has unselected siblings so we can not remove its ancestors parents\n\n    if (endBlock.getNextSiblingKey()) {\n      parentAncestors = parentAncestors.concat(endBlockAncestors);\n    } // endBlock has children so can not remove this block or any of its ancestors\n\n\n    if (!endBlockchildrenKeys.isEmpty()) {\n      parentAncestors = parentAncestors.concat(endBlockAncestors.concat([endKey]));\n    } // we need to retain all ancestors of the next delimiter block\n\n\n    parentAncestors = parentAncestors.concat(getAncestorsKeys(getNextDelimiterBlockKey(endBlock, blockMap), blockMap));\n  }\n\n  var characterList;\n\n  if (startBlock === endBlock) {\n    characterList = removeFromList(startBlock.getCharacterList(), startOffset, endOffset);\n  } else {\n    characterList = startBlock.getCharacterList().slice(0, startOffset).concat(endBlock.getCharacterList().slice(endOffset));\n  }\n\n  var modifiedStart = startBlock.merge({\n    text: startBlock.getText().slice(0, startOffset) + endBlock.getText().slice(endOffset),\n    characterList: characterList\n  }); // If cursor (collapsed) is at the start of the first child, delete parent\n  // instead of child\n\n  var shouldDeleteParent = isExperimentalTreeBlock && startOffset === 0 && endOffset === 0 && endBlock.getParentKey() === startKey && endBlock.getPrevSiblingKey() == null;\n  var newBlocks = shouldDeleteParent ? Map([[startKey, null]]) : blockMap.toSeq().skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).filter(function (_, k) {\n    return parentAncestors.indexOf(k) === -1;\n  }).concat(Map([[endKey, null]])).map(function (_, k) {\n    return k === startKey ? modifiedStart : null;\n  });\n  var updatedBlockMap = blockMap.merge(newBlocks).filter(function (block) {\n    return !!block;\n  }); // Only update tree block pointers if the range is across blocks\n\n  if (isExperimentalTreeBlock && startBlock !== endBlock) {\n    updatedBlockMap = updateBlockMapLinks(updatedBlockMap, startBlock, endBlock, blockMap);\n  }\n\n  return contentState.merge({\n    blockMap: updatedBlockMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: startKey,\n      anchorOffset: startOffset,\n      focusKey: startKey,\n      focusOffset: startOffset,\n      isBackward: false\n    })\n  });\n};\n/**\n * Maintain persistence for target list when removing characters on the\n * head and tail of the character list.\n */\n\n\nvar removeFromList = function removeFromList(targetList, startOffset, endOffset) {\n  if (startOffset === 0) {\n    while (startOffset < endOffset) {\n      targetList = targetList.shift();\n      startOffset++;\n    }\n  } else if (endOffset === targetList.count()) {\n    while (endOffset > startOffset) {\n      targetList = targetList.pop();\n      endOffset--;\n    }\n  } else {\n    var head = targetList.slice(0, startOffset);\n    var tail = targetList.slice(endOffset);\n    targetList = head.concat(tail).toList();\n  }\n\n  return targetList;\n};\n\nmodule.exports = removeRangeFromContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n  if (!key) {\n    return;\n  }\n\n  var block = blockMap.get(key);\n\n  if (!block) {\n    return;\n  }\n\n  blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlock, belowBlock) {\n  return blockMap.withMutations(function (blocks) {\n    var originalBlockKey = originalBlock.getKey();\n    var belowBlockKey = belowBlock.getKey(); // update block parent\n\n    transformBlock(originalBlock.getParentKey(), blocks, function (block) {\n      var parentChildrenList = block.getChildKeys();\n      var insertionIndex = parentChildrenList.indexOf(originalBlockKey) + 1;\n      var newChildrenArray = parentChildrenList.toArray();\n      newChildrenArray.splice(insertionIndex, 0, belowBlockKey);\n      return block.merge({\n        children: List(newChildrenArray)\n      });\n    }); // update original next block\n\n    transformBlock(originalBlock.getNextSiblingKey(), blocks, function (block) {\n      return block.merge({\n        prevSibling: belowBlockKey\n      });\n    }); // update original block\n\n    transformBlock(originalBlockKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: belowBlockKey\n      });\n    }); // update below block\n\n    transformBlock(belowBlockKey, blocks, function (block) {\n      return block.merge({\n        prevSibling: originalBlockKey\n      });\n    });\n  });\n};\n\nvar splitBlockInContentState = function splitBlockInContentState(contentState, selectionState) {\n  !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Selection range must be collapsed.') : invariant(false) : void 0;\n  var key = selectionState.getAnchorKey();\n  var blockMap = contentState.getBlockMap();\n  var blockToSplit = blockMap.get(key);\n  var text = blockToSplit.getText();\n\n  if (!text) {\n    var blockType = blockToSplit.getType();\n\n    if (blockType === 'unordered-list-item' || blockType === 'ordered-list-item') {\n      return modifyBlockForContentState(contentState, selectionState, function (block) {\n        return block.merge({\n          type: 'unstyled',\n          depth: 0\n        });\n      });\n    }\n  }\n\n  var offset = selectionState.getAnchorOffset();\n  var chars = blockToSplit.getCharacterList();\n  var keyBelow = generateRandomKey();\n  var isExperimentalTreeBlock = blockToSplit instanceof ContentBlockNode;\n  var blockAbove = blockToSplit.merge({\n    text: text.slice(0, offset),\n    characterList: chars.slice(0, offset)\n  });\n  var blockBelow = blockAbove.merge({\n    key: keyBelow,\n    text: text.slice(offset),\n    characterList: chars.slice(offset),\n    data: Map()\n  });\n  var blocksBefore = blockMap.toSeq().takeUntil(function (v) {\n    return v === blockToSplit;\n  });\n  var blocksAfter = blockMap.toSeq().skipUntil(function (v) {\n    return v === blockToSplit;\n  }).rest();\n  var newBlocks = blocksBefore.concat([[key, blockAbove], [keyBelow, blockBelow]], blocksAfter).toOrderedMap();\n\n  if (isExperimentalTreeBlock) {\n    !blockToSplit.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ContentBlockNode must not have children') : invariant(false) : void 0;\n    newBlocks = updateBlockMapLinks(newBlocks, blockAbove, blockBelow);\n  }\n\n  return contentState.merge({\n    blockMap: newBlocks,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState.merge({\n      anchorKey: keyBelow,\n      anchorOffset: 0,\n      focusKey: keyBelow,\n      focusOffset: 0,\n      isBackward: false\n    })\n  });\n};\n\nmodule.exports = splitBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Repeat = Immutable.Repeat,\n    Record = Immutable.Record;\n\nvar returnTrue = function returnTrue() {\n  return true;\n};\n\nvar defaultLeafRange = {\n  start: null,\n  end: null\n};\nvar LeafRange = Record(defaultLeafRange);\nvar defaultDecoratorRange = {\n  start: null,\n  end: null,\n  decoratorKey: null,\n  leaves: null\n};\nvar DecoratorRange = Record(defaultDecoratorRange);\nvar BlockTree = {\n  /**\n   * Generate a block tree for a given ContentBlock/decorator pair.\n   */\n  generate: function generate(contentState, block, decorator) {\n    var textLength = block.getLength();\n\n    if (!textLength) {\n      return List.of(new DecoratorRange({\n        start: 0,\n        end: 0,\n        decoratorKey: null,\n        leaves: List.of(new LeafRange({\n          start: 0,\n          end: 0\n        }))\n      }));\n    }\n\n    var leafSets = [];\n    var decorations = decorator ? decorator.getDecorations(block, contentState) : List(Repeat(null, textLength));\n    var chars = block.getCharacterList();\n    findRangesImmutable(decorations, areEqual, returnTrue, function (start, end) {\n      leafSets.push(new DecoratorRange({\n        start: start,\n        end: end,\n        decoratorKey: decorations.get(start),\n        leaves: generateLeaves(chars.slice(start, end).toList(), start)\n      }));\n    });\n    return List(leafSets);\n  },\n  fromJS: function fromJS(_ref) {\n    var leaves = _ref.leaves,\n        other = _objectWithoutPropertiesLoose(_ref, [\"leaves\"]);\n\n    return new DecoratorRange(_objectSpread({}, other, {\n      leaves: leaves != null ? List(Array.isArray(leaves) ? leaves : getOwnObjectValues(leaves)).map(function (leaf) {\n        return LeafRange(leaf);\n      }) : null\n    }));\n  }\n};\n/**\n * Generate LeafRange records for a given character list.\n */\n\nfunction generateLeaves(characters, offset) {\n  var leaves = [];\n  var inlineStyles = characters.map(function (c) {\n    return c.getStyle();\n  }).toList();\n  findRangesImmutable(inlineStyles, areEqual, returnTrue, function (start, end) {\n    leaves.push(new LeafRange({\n      start: start + offset,\n      end: end + offset\n    }));\n  });\n  return List(leaves);\n}\n\nfunction areEqual(a, b) {\n  return a === b;\n}\n\nmodule.exports = BlockTree;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @typechecks\n * \n * @format\n */\n\n/*eslint-disable no-bitwise */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuid() {\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n    var r = Math.random() * 16 | 0;\n    var v = c == 'x' ? r : r & 0x3 | 0x8;\n    return v.toString(16);\n  });\n}\n\nmodule.exports = uuid;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeBidiService = require(\"fbjs/lib/UnicodeBidiService\");\n\nvar Immutable = require(\"immutable\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar bidiService;\nvar EditorBidiService = {\n  getDirectionMap: function getDirectionMap(content, prevBidiMap) {\n    if (!bidiService) {\n      bidiService = new UnicodeBidiService();\n    } else {\n      bidiService.reset();\n    }\n\n    var blockMap = content.getBlockMap();\n    var nextBidi = blockMap.valueSeq().map(function (block) {\n      return nullthrows(bidiService).getDirection(block.getText());\n    });\n    var bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));\n\n    if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {\n      return prevBidiMap;\n    }\n\n    return bidiMap;\n  }\n};\nmodule.exports = EditorBidiService;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Stateful API for text direction detection\n *\n * This class can be used in applications where you need to detect the\n * direction of a sequence of text blocks, where each direction shall be used\n * as the fallback direction for the next one.\n *\n * NOTE: A default direction, if not provided, is set based on the global\n *       direction, as defined by `UnicodeBidiDirection`.\n *\n * == Example ==\n * ```\n * var UnicodeBidiService = require('UnicodeBidiService');\n *\n * var bidiService = new UnicodeBidiService();\n *\n * ...\n *\n * bidiService.reset();\n * for (var para in paragraphs) {\n *   var dir = bidiService.getDirection(para);\n *   ...\n * }\n * ```\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UnicodeBidi = require(\"./UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\nvar UnicodeBidiService =\n/*#__PURE__*/\nfunction () {\n  /**\n   * Stateful class for paragraph direction detection\n   *\n   * @param defaultDir  Default direction of the service\n   */\n  function UnicodeBidiService(defaultDir) {\n    _defineProperty(this, \"_defaultDir\", void 0);\n\n    _defineProperty(this, \"_lastDir\", void 0);\n\n    if (!defaultDir) {\n      defaultDir = UnicodeBidiDirection.getGlobalDir();\n    } else {\n      !UnicodeBidiDirection.isStrong(defaultDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Default direction must be a strong direction (LTR or RTL)') : invariant(false) : void 0;\n    }\n\n    this._defaultDir = defaultDir;\n    this.reset();\n  }\n  /**\n   * Reset the internal state\n   *\n   * Instead of creating a new instance, you can just reset() your instance\n   * everytime you start a new loop.\n   */\n\n\n  var _proto = UnicodeBidiService.prototype;\n\n  _proto.reset = function reset() {\n    this._lastDir = this._defaultDir;\n  };\n  /**\n   * Returns the direction of a block of text, and remembers it as the\n   * fall-back direction for the next paragraph.\n   *\n   * @param str  A text block, e.g. paragraph, table cell, tag\n   * @return     The resolved direction\n   */\n\n\n  _proto.getDirection = function getDirection(str) {\n    this._lastDir = UnicodeBidi.getDirection(str, this._lastDir);\n    return this._lastDir;\n  };\n\n  return UnicodeBidiService;\n}();\n\nmodule.exports = UnicodeBidiService;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar OrderedMap = Immutable.OrderedMap,\n    List = Immutable.List;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n  if (!key) {\n    return;\n  }\n\n  var block = blockMap.get(key);\n\n  if (!block) {\n    return;\n  }\n\n  blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockToBeMoved, originalTargetBlock, insertionMode, isExperimentalTreeBlock) {\n  if (!isExperimentalTreeBlock) {\n    return blockMap;\n  } // possible values of 'insertionMode' are: 'after', 'before'\n\n\n  var isInsertedAfterTarget = insertionMode === 'after';\n  var originalBlockKey = originalBlockToBeMoved.getKey();\n  var originalTargetKey = originalTargetBlock.getKey();\n  var originalParentKey = originalBlockToBeMoved.getParentKey();\n  var originalNextSiblingKey = originalBlockToBeMoved.getNextSiblingKey();\n  var originalPrevSiblingKey = originalBlockToBeMoved.getPrevSiblingKey();\n  var newParentKey = originalTargetBlock.getParentKey();\n  var newNextSiblingKey = isInsertedAfterTarget ? originalTargetBlock.getNextSiblingKey() : originalTargetKey;\n  var newPrevSiblingKey = isInsertedAfterTarget ? originalTargetKey : originalTargetBlock.getPrevSiblingKey();\n  return blockMap.withMutations(function (blocks) {\n    // update old parent\n    transformBlock(originalParentKey, blocks, function (block) {\n      var parentChildrenList = block.getChildKeys();\n      return block.merge({\n        children: parentChildrenList[\"delete\"](parentChildrenList.indexOf(originalBlockKey))\n      });\n    }); // update old prev\n\n    transformBlock(originalPrevSiblingKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: originalNextSiblingKey\n      });\n    }); // update old next\n\n    transformBlock(originalNextSiblingKey, blocks, function (block) {\n      return block.merge({\n        prevSibling: originalPrevSiblingKey\n      });\n    }); // update new next\n\n    transformBlock(newNextSiblingKey, blocks, function (block) {\n      return block.merge({\n        prevSibling: originalBlockKey\n      });\n    }); // update new prev\n\n    transformBlock(newPrevSiblingKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: originalBlockKey\n      });\n    }); // update new parent\n\n    transformBlock(newParentKey, blocks, function (block) {\n      var newParentChildrenList = block.getChildKeys();\n      var targetBlockIndex = newParentChildrenList.indexOf(originalTargetKey);\n      var insertionIndex = isInsertedAfterTarget ? targetBlockIndex + 1 : targetBlockIndex !== 0 ? targetBlockIndex - 1 : 0;\n      var newChildrenArray = newParentChildrenList.toArray();\n      newChildrenArray.splice(insertionIndex, 0, originalBlockKey);\n      return block.merge({\n        children: List(newChildrenArray)\n      });\n    }); // update block\n\n    transformBlock(originalBlockKey, blocks, function (block) {\n      return block.merge({\n        nextSibling: newNextSiblingKey,\n        prevSibling: newPrevSiblingKey,\n        parent: newParentKey\n      });\n    });\n  });\n};\n\nvar moveBlockInContentState = function moveBlockInContentState(contentState, blockToBeMoved, targetBlock, insertionMode) {\n  !(insertionMode !== 'replace') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Replacing blocks is not supported.') : invariant(false) : void 0;\n  var targetKey = targetBlock.getKey();\n  var blockKey = blockToBeMoved.getKey();\n  !(blockKey !== targetKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n  var blockMap = contentState.getBlockMap();\n  var isExperimentalTreeBlock = blockToBeMoved instanceof ContentBlockNode;\n  var blocksToBeMoved = [blockToBeMoved];\n  var blockMapWithoutBlocksToBeMoved = blockMap[\"delete\"](blockKey);\n\n  if (isExperimentalTreeBlock) {\n    blocksToBeMoved = [];\n    blockMapWithoutBlocksToBeMoved = blockMap.withMutations(function (blocks) {\n      var nextSiblingKey = blockToBeMoved.getNextSiblingKey();\n      var nextDelimiterBlockKey = getNextDelimiterBlockKey(blockToBeMoved, blocks);\n      blocks.toSeq().skipUntil(function (block) {\n        return block.getKey() === blockKey;\n      }).takeWhile(function (block) {\n        var key = block.getKey();\n        var isBlockToBeMoved = key === blockKey;\n        var hasNextSiblingAndIsNotNextSibling = nextSiblingKey && key !== nextSiblingKey;\n        var doesNotHaveNextSiblingAndIsNotDelimiter = !nextSiblingKey && block.getParentKey() && (!nextDelimiterBlockKey || key !== nextDelimiterBlockKey);\n        return !!(isBlockToBeMoved || hasNextSiblingAndIsNotNextSibling || doesNotHaveNextSiblingAndIsNotDelimiter);\n      }).forEach(function (block) {\n        blocksToBeMoved.push(block);\n        blocks[\"delete\"](block.getKey());\n      });\n    });\n  }\n\n  var blocksBefore = blockMapWithoutBlocksToBeMoved.toSeq().takeUntil(function (v) {\n    return v === targetBlock;\n  });\n  var blocksAfter = blockMapWithoutBlocksToBeMoved.toSeq().skipUntil(function (v) {\n    return v === targetBlock;\n  }).skip(1);\n  var slicedBlocks = blocksToBeMoved.map(function (block) {\n    return [block.getKey(), block];\n  });\n  var newBlocks = OrderedMap();\n\n  if (insertionMode === 'before') {\n    var blockBefore = contentState.getBlockBefore(targetKey);\n    !(!blockBefore || blockBefore.getKey() !== blockToBeMoved.getKey()) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n    newBlocks = blocksBefore.concat([].concat(slicedBlocks, [[targetKey, targetBlock]]), blocksAfter).toOrderedMap();\n  } else if (insertionMode === 'after') {\n    var blockAfter = contentState.getBlockAfter(targetKey);\n    !(!blockAfter || blockAfter.getKey() !== blockKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n    newBlocks = blocksBefore.concat([[targetKey, targetBlock]].concat(slicedBlocks), blocksAfter).toOrderedMap();\n  }\n\n  return contentState.merge({\n    blockMap: updateBlockMapLinks(newBlocks, blockToBeMoved, targetBlock, insertionMode, isExperimentalTreeBlock),\n    selectionBefore: contentState.getSelectionAfter(),\n    selectionAfter: contentState.getSelectionAfter().merge({\n      anchorKey: blockKey,\n      focusKey: blockKey\n    })\n  });\n};\n\nmodule.exports = moveBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\nvar DELIMITER = '.';\n/**\n * A CompositeDraftDecorator traverses through a list of DraftDecorator\n * instances to identify sections of a ContentBlock that should be rendered\n * in a \"decorated\" manner. For example, hashtags, mentions, and links may\n * be intended to stand out visually, be rendered as anchors, etc.\n *\n * The list of decorators supplied to the constructor will be used in the\n * order they are provided. This allows the caller to specify a priority for\n * string matching, in case of match collisions among decorators.\n *\n * For instance, I may have a link with a `#` in its text. Though this section\n * of text may match our hashtag decorator, it should not be treated as a\n * hashtag. I should therefore list my link DraftDecorator\n * before my hashtag DraftDecorator when constructing this composite\n * decorator instance.\n *\n * Thus, when a collision like this is encountered, the earlier match is\n * preserved and the new match is discarded.\n */\n\nvar CompositeDraftDecorator = /*#__PURE__*/function () {\n  function CompositeDraftDecorator(decorators) {\n    _defineProperty(this, \"_decorators\", void 0);\n\n    // Copy the decorator array, since we use this array order to determine\n    // precedence of decoration matching. If the array is mutated externally,\n    // we don't want to be affected here.\n    this._decorators = decorators.slice();\n  }\n\n  var _proto = CompositeDraftDecorator.prototype;\n\n  _proto.getDecorations = function getDecorations(block, contentState) {\n    var decorations = Array(block.getText().length).fill(null);\n\n    this._decorators.forEach(function (\n    /*object*/\n    decorator,\n    /*number*/\n    ii) {\n      var counter = 0;\n      var strategy = decorator.strategy;\n\n      var callback = function callback(\n      /*number*/\n      start,\n      /*number*/\n      end) {\n        // Find out if any of our matching range is already occupied\n        // by another decorator. If so, discard the match. Otherwise, store\n        // the component key for rendering.\n        if (canOccupySlice(decorations, start, end)) {\n          occupySlice(decorations, start, end, ii + DELIMITER + counter);\n          counter++;\n        }\n      };\n\n      strategy(block, callback, contentState);\n    });\n\n    return List(decorations);\n  };\n\n  _proto.getComponentForKey = function getComponentForKey(key) {\n    var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n    return this._decorators[componentKey].component;\n  };\n\n  _proto.getPropsForKey = function getPropsForKey(key) {\n    var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n    return this._decorators[componentKey].props;\n  };\n\n  return CompositeDraftDecorator;\n}();\n/**\n * Determine whether we can occupy the specified slice of the decorations\n * array.\n */\n\n\nfunction canOccupySlice(decorations, start, end) {\n  for (var ii = start; ii < end; ii++) {\n    if (decorations[ii] != null) {\n      return false;\n    }\n  }\n\n  return true;\n}\n/**\n * Splice the specified component into our decoration array at the desired\n * range.\n */\n\n\nfunction occupySlice(targetArr, start, end, componentKey) {\n  for (var ii = start; ii < end; ii++) {\n    targetArr[ii] = componentKey;\n  }\n}\n\nmodule.exports = CompositeDraftDecorator;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @preventMunge\n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditorCompositionHandler = require(\"./DraftEditorCompositionHandler\");\n\nvar DraftEditorContents = require(\"./DraftEditorContents.react\");\n\nvar DraftEditorDragHandler = require(\"./DraftEditorDragHandler\");\n\nvar DraftEditorEditHandler = require(\"./DraftEditorEditHandler\");\n\nvar flushControlled = require(\"./DraftEditorFlushControlled\");\n\nvar DraftEditorPlaceholder = require(\"./DraftEditorPlaceholder.react\");\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar gkx = require(\"./gkx\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE'); // IE does not support the `input` event on contentEditable, so we can't\n// observe spellcheck behavior.\n\nvar allowSpellCheck = !isIE; // Define a set of handler objects to correspond to each possible `mode`\n// of editor behavior.\n\nvar handlerMap = {\n  edit: DraftEditorEditHandler,\n  composite: DraftEditorCompositionHandler,\n  drag: DraftEditorDragHandler,\n  cut: null,\n  render: null\n};\nvar didInitODS = false;\n\nvar UpdateDraftEditorFlags = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(UpdateDraftEditorFlags, _React$Component);\n\n  function UpdateDraftEditorFlags() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = UpdateDraftEditorFlags.prototype;\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._update();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this._update();\n  };\n\n  _proto._update = function _update() {\n    var editor = this.props.editor;\n    /**\n     * Sometimes a render triggers a 'focus' or other event, and that will\n     * schedule a second render pass.\n     * In order to make sure the second render pass gets the latest editor\n     * state, we update it here.\n     * Example:\n     * render #1\n     * +\n     * |\n     * | cWU -> Nothing ... latestEditorState = STALE_STATE :(\n     * |\n     * | render -> this.props.editorState = FRESH_STATE\n     * | +         *and* set latestEditorState = FRESH_STATE\n     *   |\n     * | |\n     * | +--> triggers 'focus' event, calling 'handleFocus' with latestEditorState\n     * |                                                +\n     * |                                                |\n     * +>cdU -> latestEditorState = FRESH_STATE         | the 'handleFocus' call schedules render #2\n     *                                                  | with latestEditorState, which is FRESH_STATE\n     *                                                  |\n     * render #2 <--------------------------------------+\n     * +\n     * |\n     * | cwU -> nothing updates\n     * |\n     * | render -> this.props.editorState = FRESH_STATE which was passed in above\n     * |\n     * +>cdU fires and resets latestEditorState = FRESH_STATE\n     * ---\n     * Note that if we don't set latestEditorState in 'render' in the above\n     * diagram, then STALE_STATE gets passed to render #2.\n     */\n\n    editor._latestEditorState = this.props.editorState;\n    /**\n     * The reason we set this 'blockSelectEvents' flag is that  IE will fire a\n     * 'selectionChange' event when we programmatically change the selection,\n     * meaning it would trigger a new select event while we are in the middle\n     * of updating.\n     * We found that the 'selection.addRange' was what triggered the stray\n     * selectionchange event in IE.\n     * To be clear - we have not been able to reproduce specific bugs related\n     * to this stray selection event, but have recorded logs that some\n     * conditions do cause it to get bumped into during editOnSelect.\n     */\n\n    editor._blockSelectEvents = true;\n  };\n\n  return UpdateDraftEditorFlags;\n}(React.Component);\n/**\n * `DraftEditor` is the root editor component. It composes a `contentEditable`\n * div, and provides a wide variety of useful function props for managing the\n * state of the editor. See `DraftEditorProps` for details.\n */\n\n\nvar DraftEditor = /*#__PURE__*/function (_React$Component2) {\n  _inheritsLoose(DraftEditor, _React$Component2);\n\n  /**\n   * Define proxies that can route events to the current handler.\n   */\n  function DraftEditor(props) {\n    var _this;\n\n    _this = _React$Component2.call(this, props) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"_blockSelectEvents\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_clipboard\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_handler\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_dragCount\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_internalDrag\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_editorKey\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_placeholderAccessibilityID\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_latestEditorState\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_latestCommittedEditorState\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_pendingStateFromBeforeInput\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onBeforeInput\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onBlur\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCharacterData\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCompositionEnd\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCompositionStart\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCopy\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onCut\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDragEnd\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDragOver\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onDrop\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onInput\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onFocus\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyPress\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onKeyUp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onMouseDown\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onMouseUp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onPaste\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_onSelect\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"editor\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"editorContainer\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"focus\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"blur\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"setMode\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"setClipboard\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"getClipboard\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"getEditorKey\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"update\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_handleEditorContainerRef\", function (node) {\n      _this.editorContainer = node; // Instead of having a direct ref on the child, we'll grab it here.\n      // This is safe as long as the rendered structure is static (which it is).\n      // This lets the child support ref={props.editorRef} without merging refs.\n\n      _this.editor = node !== null ? node.firstChild : null;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"focus\", function (scrollPosition) {\n      var editorState = _this.props.editorState;\n      var alreadyHasFocus = editorState.getSelection().getHasFocus();\n      var editorNode = _this.editor;\n\n      if (!editorNode) {\n        // once in a while people call 'focus' in a setTimeout, and the node has\n        // been deleted, so it can be null in that case.\n        return;\n      }\n\n      var scrollParent = Style.getScrollParent(editorNode);\n\n      var _ref = scrollPosition || getScrollPosition(scrollParent),\n          x = _ref.x,\n          y = _ref.y;\n\n      !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n      editorNode.focus(); // Restore scroll position\n\n      if (scrollParent === window) {\n        window.scrollTo(x, y);\n      } else {\n        Scroll.setTop(scrollParent, y);\n      } // On Chrome and Safari, calling focus on contenteditable focuses the\n      // cursor at the first character. This is something you don't expect when\n      // you're clicking on an input element but not directly on a character.\n      // Put the cursor back where it was before the blur.\n\n\n      if (!alreadyHasFocus) {\n        _this.update(EditorState.forceSelection(editorState, editorState.getSelection()));\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n      var editorNode = _this.editor;\n\n      if (!editorNode) {\n        return;\n      }\n\n      !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n      editorNode.blur();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"setMode\", function (mode) {\n      var _this$props = _this.props,\n          onPaste = _this$props.onPaste,\n          onCut = _this$props.onCut,\n          onCopy = _this$props.onCopy;\n\n      var editHandler = _objectSpread({}, handlerMap.edit);\n\n      if (onPaste) {\n        /* $FlowFixMe[incompatible-type] (>=0.117.0 site=www,mobile) This comment\n         * suppresses an error found when Flow v0.117 was deployed. To see the\n         * error delete this comment and run Flow. */\n        editHandler.onPaste = onPaste;\n      }\n\n      if (onCut) {\n        editHandler.onCut = onCut;\n      }\n\n      if (onCopy) {\n        editHandler.onCopy = onCopy;\n      }\n\n      var handler = _objectSpread({}, handlerMap, {\n        edit: editHandler\n      });\n\n      _this._handler = handler[mode];\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", function () {\n      _this.setMode('edit');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", function (scrollPosition) {\n      _this.setState({\n        contentsKey: _this.state.contentsKey + 1\n      }, function () {\n        _this.focus(scrollPosition);\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"setClipboard\", function (clipboard) {\n      _this._clipboard = clipboard;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getClipboard\", function () {\n      return _this._clipboard;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"update\", function (editorState) {\n      _this._latestEditorState = editorState;\n\n      _this.props.onChange(editorState);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", function () {\n      _this._dragCount++;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", function () {\n      _this._dragCount--;\n\n      if (_this._dragCount === 0) {\n        _this.exitCurrentMode();\n      }\n    });\n\n    _this._blockSelectEvents = false;\n    _this._clipboard = null;\n    _this._handler = null;\n    _this._dragCount = 0;\n    _this._editorKey = props.editorKey || generateRandomKey();\n    _this._placeholderAccessibilityID = 'placeholder-' + _this._editorKey;\n    _this._latestEditorState = props.editorState;\n    _this._latestCommittedEditorState = props.editorState;\n    _this._onBeforeInput = _this._buildHandler('onBeforeInput');\n    _this._onBlur = _this._buildHandler('onBlur');\n    _this._onCharacterData = _this._buildHandler('onCharacterData');\n    _this._onCompositionEnd = _this._buildHandler('onCompositionEnd');\n    _this._onCompositionStart = _this._buildHandler('onCompositionStart');\n    _this._onCopy = _this._buildHandler('onCopy');\n    _this._onCut = _this._buildHandler('onCut');\n    _this._onDragEnd = _this._buildHandler('onDragEnd');\n    _this._onDragOver = _this._buildHandler('onDragOver');\n    _this._onDragStart = _this._buildHandler('onDragStart');\n    _this._onDrop = _this._buildHandler('onDrop');\n    _this._onInput = _this._buildHandler('onInput');\n    _this._onFocus = _this._buildHandler('onFocus');\n    _this._onKeyDown = _this._buildHandler('onKeyDown');\n    _this._onKeyPress = _this._buildHandler('onKeyPress');\n    _this._onKeyUp = _this._buildHandler('onKeyUp');\n    _this._onMouseDown = _this._buildHandler('onMouseDown');\n    _this._onMouseUp = _this._buildHandler('onMouseUp');\n    _this._onPaste = _this._buildHandler('onPaste');\n    _this._onSelect = _this._buildHandler('onSelect');\n\n    _this.getEditorKey = function () {\n      return _this._editorKey;\n    };\n\n    if (process.env.NODE_ENV !== \"production\") {\n      ['onDownArrow', 'onEscape', 'onLeftArrow', 'onRightArrow', 'onTab', 'onUpArrow'].forEach(function (propName) {\n        if (props.hasOwnProperty(propName)) {\n          // eslint-disable-next-line no-console\n          console.warn(\"Supplying an `\".concat(propName, \"` prop to `DraftEditor` has \") + 'been deprecated. If your handler needs access to the keyboard ' + 'event, supply a custom `keyBindingFn` prop that falls back to ' + 'the default one (eg. https://is.gd/wHKQ3W).');\n        }\n      });\n    } // See `restoreEditorDOM()`.\n\n\n    _this.state = {\n      contentsKey: 0\n    };\n    return _this;\n  }\n  /**\n   * Build a method that will pass the event to the specified handler method.\n   * This allows us to look up the correct handler function for the current\n   * editor mode, if any has been specified.\n   */\n\n\n  var _proto2 = DraftEditor.prototype;\n\n  _proto2._buildHandler = function _buildHandler(eventName) {\n    var _this2 = this;\n\n    // Wrap event handlers in `flushControlled`. In sync mode, this is\n    // effectively a no-op. In async mode, this ensures all updates scheduled\n    // inside the handler are flushed before React yields to the browser.\n    return function (e) {\n      if (!_this2.props.readOnly) {\n        var method = _this2._handler && _this2._handler[eventName];\n\n        if (method) {\n          if (flushControlled) {\n            flushControlled(function () {\n              return method(_this2, e);\n            });\n          } else {\n            method(_this2, e);\n          }\n        }\n      }\n    };\n  };\n\n  _proto2._showPlaceholder = function _showPlaceholder() {\n    return !!this.props.placeholder && !this.props.editorState.isInCompositionMode() && !this.props.editorState.getCurrentContent().hasText();\n  };\n\n  _proto2._renderPlaceholder = function _renderPlaceholder() {\n    if (this._showPlaceholder()) {\n      var placeHolderProps = {\n        text: nullthrows(this.props.placeholder),\n        editorState: this.props.editorState,\n        textAlignment: this.props.textAlignment,\n        accessibilityID: this._placeholderAccessibilityID\n      };\n      /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This comment\n       * suppresses an error found when Flow v0.112 was deployed. To see the\n       * error delete this comment and run Flow. */\n\n      return React.createElement(DraftEditorPlaceholder, placeHolderProps);\n    }\n\n    return null;\n  }\n  /**\n   * returns ariaDescribedBy prop with '{{editor_id_placeholder}}' replaced with\n   * the DOM id of the placeholder (if it exists)\n   * @returns aria-describedby attribute value\n   */\n  ;\n\n  _proto2._renderARIADescribedBy = function _renderARIADescribedBy() {\n    var describedBy = this.props.ariaDescribedBy || '';\n    var placeholderID = this._showPlaceholder() ? this._placeholderAccessibilityID : '';\n    return describedBy.replace('{{editor_id_placeholder}}', placeholderID) || undefined;\n  };\n\n  _proto2.render = function render() {\n    var _this$props2 = this.props,\n        blockRenderMap = _this$props2.blockRenderMap,\n        blockRendererFn = _this$props2.blockRendererFn,\n        blockStyleFn = _this$props2.blockStyleFn,\n        customStyleFn = _this$props2.customStyleFn,\n        customStyleMap = _this$props2.customStyleMap,\n        editorState = _this$props2.editorState,\n        preventScroll = _this$props2.preventScroll,\n        readOnly = _this$props2.readOnly,\n        textAlignment = _this$props2.textAlignment,\n        textDirectionality = _this$props2.textDirectionality;\n    var rootClass = cx({\n      'DraftEditor/root': true,\n      'DraftEditor/alignLeft': textAlignment === 'left',\n      'DraftEditor/alignRight': textAlignment === 'right',\n      'DraftEditor/alignCenter': textAlignment === 'center'\n    });\n    var contentStyle = {\n      outline: 'none',\n      // fix parent-draggable Safari bug. #1326\n      userSelect: 'text',\n      WebkitUserSelect: 'text',\n      whiteSpace: 'pre-wrap',\n      wordWrap: 'break-word'\n    }; // The aria-expanded and aria-haspopup properties should only be rendered\n    // for a combobox.\n\n    /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n     * suppresses an error found when Flow v0.68 was deployed. To see the error\n     * delete this comment and run Flow. */\n\n    var ariaRole = this.props.role || 'textbox';\n    var ariaExpanded = ariaRole === 'combobox' ? !!this.props.ariaExpanded : null;\n    var editorContentsProps = {\n      blockRenderMap: blockRenderMap,\n      blockRendererFn: blockRendererFn,\n      blockStyleFn: blockStyleFn,\n      customStyleMap: _objectSpread({}, DefaultDraftInlineStyle, customStyleMap),\n      customStyleFn: customStyleFn,\n      editorKey: this._editorKey,\n      editorState: editorState,\n      preventScroll: preventScroll,\n      textDirectionality: textDirectionality\n    };\n    return React.createElement(\"div\", {\n      className: rootClass\n    }, this._renderPlaceholder(), React.createElement(\"div\", {\n      className: cx('DraftEditor/editorContainer'),\n      ref: this._handleEditorContainerRef\n    }, React.createElement(\"div\", {\n      \"aria-activedescendant\": readOnly ? null : this.props.ariaActiveDescendantID,\n      \"aria-autocomplete\": readOnly ? null : this.props.ariaAutoComplete,\n      \"aria-controls\": readOnly ? null : this.props.ariaControls,\n      \"aria-describedby\": this._renderARIADescribedBy(),\n      \"aria-expanded\": readOnly ? null : ariaExpanded,\n      \"aria-label\": this.props.ariaLabel,\n      \"aria-labelledby\": this.props.ariaLabelledBy,\n      \"aria-multiline\": this.props.ariaMultiline,\n      \"aria-owns\": readOnly ? null : this.props.ariaOwneeID,\n      autoCapitalize: this.props.autoCapitalize,\n      autoComplete: this.props.autoComplete,\n      autoCorrect: this.props.autoCorrect,\n      className: cx({\n        // Chrome's built-in translation feature mutates the DOM in ways\n        // that Draft doesn't expect (ex: adding <font> tags inside\n        // DraftEditorLeaf spans) and causes problems. We add notranslate\n        // here which makes its autotranslation skip over this subtree.\n        notranslate: !readOnly,\n        'public/DraftEditor/content': true\n      }),\n      contentEditable: !readOnly,\n      \"data-testid\": this.props.webDriverTestID,\n      onBeforeInput: this._onBeforeInput,\n      onBlur: this._onBlur,\n      onCompositionEnd: this._onCompositionEnd,\n      onCompositionStart: this._onCompositionStart,\n      onCopy: this._onCopy,\n      onCut: this._onCut,\n      onDragEnd: this._onDragEnd,\n      onDragEnter: this.onDragEnter,\n      onDragLeave: this.onDragLeave,\n      onDragOver: this._onDragOver,\n      onDragStart: this._onDragStart,\n      onDrop: this._onDrop,\n      onFocus: this._onFocus,\n      onInput: this._onInput,\n      onKeyDown: this._onKeyDown,\n      onKeyPress: this._onKeyPress,\n      onKeyUp: this._onKeyUp,\n      onMouseUp: this._onMouseUp,\n      onPaste: this._onPaste,\n      onSelect: this._onSelect,\n      ref: this.props.editorRef,\n      role: readOnly ? null : ariaRole,\n      spellCheck: allowSpellCheck && this.props.spellCheck,\n      style: contentStyle,\n      suppressContentEditableWarning: true,\n      tabIndex: this.props.tabIndex\n    }, React.createElement(UpdateDraftEditorFlags, {\n      editor: this,\n      editorState: editorState\n    }), React.createElement(DraftEditorContents, _extends({}, editorContentsProps, {\n      key: 'contents' + this.state.contentsKey\n    })))));\n  };\n\n  _proto2.componentDidMount = function componentDidMount() {\n    this._blockSelectEvents = false;\n\n    if (!didInitODS && gkx('draft_ods_enabled')) {\n      didInitODS = true;\n      DraftEffects.initODS();\n    }\n\n    this.setMode('edit');\n    /**\n     * IE has a hardcoded \"feature\" that attempts to convert link text into\n     * anchors in contentEditable DOM. This breaks the editor's expectations of\n     * the DOM, and control is lost. Disable it to make IE behave.\n     * See: http://blogs.msdn.com/b/ieinternals/archive/2010/09/15/\n     * ie9-beta-minor-change-list.aspx\n     */\n\n    if (isIE) {\n      // editor can be null after mounting\n      // https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback\n      if (!this.editor) {\n        global.execCommand('AutoUrlDetect', false, false);\n      } else {\n        this.editor.ownerDocument.execCommand('AutoUrlDetect', false, false);\n      }\n    }\n  };\n\n  _proto2.componentDidUpdate = function componentDidUpdate() {\n    this._blockSelectEvents = false;\n    this._latestEditorState = this.props.editorState;\n    this._latestCommittedEditorState = this.props.editorState;\n  }\n  /**\n   * Used via `this.focus()`.\n   *\n   * Force focus back onto the editor node.\n   *\n   * We attempt to preserve scroll position when focusing. You can also pass\n   * a specified scroll position (for cases like `cut` behavior where it should\n   * be restored to a known position).\n   */\n  ;\n\n  return DraftEditor;\n}(React.Component);\n\n_defineProperty(DraftEditor, \"defaultProps\", {\n  ariaDescribedBy: '{{editor_id_placeholder}}',\n  blockRenderMap: DefaultDraftBlockRenderMap,\n  blockRendererFn: function blockRendererFn() {\n    return null;\n  },\n  blockStyleFn: function blockStyleFn() {\n    return '';\n  },\n  keyBindingFn: getDefaultKeyBinding,\n  readOnly: false,\n  spellCheck: false,\n  stripPastedStyles: false\n});\n\nmodule.exports = DraftEditor;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DOMObserver = require(\"./DOMObserver\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar editOnSelect = require(\"./editOnSelect\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE');\n/**\n * Millisecond delay to allow `compositionstart` to fire again upon\n * `compositionend`.\n *\n * This is used for Korean input to ensure that typing can continue without\n * the editor trying to render too quickly. More specifically, Safari 7.1+\n * triggers `compositionstart` a little slower than Chrome/FF, which\n * leads to composed characters being resolved and re-render occurring\n * sooner than we want.\n */\n\nvar RESOLVE_DELAY = 20;\n/**\n * A handful of variables used to track the current composition and its\n * resolution status. These exist at the module level because it is not\n * possible to have compositions occurring in multiple editors simultaneously,\n * and it simplifies state management with respect to the DraftEditor component.\n */\n\nvar resolved = false;\nvar stillComposing = false;\nvar domObserver = null;\n\nfunction startDOMObserver(editor) {\n  if (!domObserver) {\n    domObserver = new DOMObserver(getContentEditableContainer(editor));\n    domObserver.start();\n  }\n}\n\nvar DraftEditorCompositionHandler = {\n  /**\n   * A `compositionstart` event has fired while we're still in composition\n   * mode. Continue the current composition session to prevent a re-render.\n   */\n  onCompositionStart: function onCompositionStart(editor) {\n    stillComposing = true;\n    startDOMObserver(editor);\n  },\n\n  /**\n   * Attempt to end the current composition session.\n   *\n   * Defer handling because browser will still insert the chars into active\n   * element after `compositionend`. If a `compositionstart` event fires\n   * before `resolveComposition` executes, our composition session will\n   * continue.\n   *\n   * The `resolved` flag is useful because certain IME interfaces fire the\n   * `compositionend` event multiple times, thus queueing up multiple attempts\n   * at handling the composition. Since handling the same composition event\n   * twice could break the DOM, we only use the first event. Example: Arabic\n   * Google Input Tools on Windows 8.1 fires `compositionend` three times.\n   */\n  onCompositionEnd: function onCompositionEnd(editor) {\n    resolved = false;\n    stillComposing = false;\n    setTimeout(function () {\n      if (!resolved) {\n        DraftEditorCompositionHandler.resolveComposition(editor);\n      }\n    }, RESOLVE_DELAY);\n  },\n  onSelect: editOnSelect,\n\n  /**\n   * In Safari, keydown events may fire when committing compositions. If\n   * the arrow keys are used to commit, prevent default so that the cursor\n   * doesn't move, otherwise it will jump back noticeably on re-render.\n   */\n  onKeyDown: function onKeyDown(editor, e) {\n    if (!stillComposing) {\n      // If a keydown event is received after compositionend but before the\n      // 20ms timer expires (ex: type option-E then backspace, or type A then\n      // backspace in 2-Set Korean), we should immediately resolve the\n      // composition and reinterpret the key press in edit mode.\n      DraftEditorCompositionHandler.resolveComposition(editor);\n\n      editor._onKeyDown(e);\n\n      return;\n    }\n\n    if (e.which === Keys.RIGHT || e.which === Keys.LEFT) {\n      e.preventDefault();\n    }\n  },\n\n  /**\n   * Keypress events may fire when committing compositions. In Firefox,\n   * pressing RETURN commits the composition and inserts extra newline\n   * characters that we do not want. `preventDefault` allows the composition\n   * to be committed while preventing the extra characters.\n   */\n  onKeyPress: function onKeyPress(_editor, e) {\n    if (e.which === Keys.RETURN) {\n      e.preventDefault();\n    }\n  },\n\n  /**\n   * Attempt to insert composed characters into the document.\n   *\n   * If we are still in a composition session, do nothing. Otherwise, insert\n   * the characters into the document and terminate the composition session.\n   *\n   * If no characters were composed -- for instance, the user\n   * deleted all composed characters and committed nothing new --\n   * force a re-render. We also re-render when the composition occurs\n   * at the beginning of a leaf, to ensure that if the browser has\n   * created a new text node for the composition, we will discard it.\n   *\n   * Resetting innerHTML will move focus to the beginning of the editor,\n   * so we update to force it back to the correct place.\n   */\n  resolveComposition: function resolveComposition(editor) {\n    if (stillComposing) {\n      return;\n    }\n\n    var mutations = nullthrows(domObserver).stopAndFlushMutations();\n    domObserver = null;\n    resolved = true;\n    var editorState = EditorState.set(editor._latestEditorState, {\n      inCompositionMode: false\n    });\n    editor.exitCurrentMode();\n\n    if (!mutations.size) {\n      editor.update(editorState);\n      return;\n    } // TODO, check if Facebook still needs this flag or if it could be removed.\n    // Since there can be multiple mutations providing a `composedChars` doesn't\n    // apply well on this new model.\n    // if (\n    //   gkx('draft_handlebeforeinput_composed_text') &&\n    //   editor.props.handleBeforeInput &&\n    //   isEventHandled(\n    //     editor.props.handleBeforeInput(\n    //       composedChars,\n    //       editorState,\n    //       event.timeStamp,\n    //     ),\n    //   )\n    // ) {\n    //   return;\n    // }\n\n\n    var contentState = editorState.getCurrentContent();\n    mutations.forEach(function (composedChars, offsetKey) {\n      var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n          blockKey = _DraftOffsetKey$decod.blockKey,\n          decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n          leafKey = _DraftOffsetKey$decod.leafKey;\n\n      var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n          start = _editorState$getBlock.start,\n          end = _editorState$getBlock.end;\n\n      var replacementRange = editorState.getSelection().merge({\n        anchorKey: blockKey,\n        focusKey: blockKey,\n        anchorOffset: start,\n        focusOffset: end,\n        isBackward: false\n      });\n      var entityKey = getEntityKeyForSelection(contentState, replacementRange);\n      var currentStyle = contentState.getBlockForKey(blockKey).getInlineStyleAt(start);\n      contentState = DraftModifier.replaceText(contentState, replacementRange, composedChars, currentStyle, entityKey); // We need to update the editorState so the leaf node ranges are properly\n      // updated and multiple mutations are correctly applied.\n\n      editorState = EditorState.set(editorState, {\n        currentContent: contentState\n      });\n    }); // When we apply the text changes to the ContentState, the selection always\n    // goes to the end of the field, but it should just stay where it is\n    // after compositionEnd.\n\n    var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n    var compositionEndSelectionState = documentSelection.selectionState;\n    editor.restoreEditorDOM(); // See:\n    // - https://github.com/facebook/draft-js/issues/2093\n    // - https://github.com/facebook/draft-js/pull/2094\n    // Apply this fix only in IE for now. We can test it in\n    // other browsers in the future to ensure no regressions\n\n    var editorStateWithUpdatedSelection = isIE ? EditorState.forceSelection(editorState, compositionEndSelectionState) : EditorState.acceptSelection(editorState, compositionEndSelectionState);\n    editor.update(EditorState.push(editorStateWithUpdatedSelection, contentState, 'insert-characters'));\n  }\n};\nmodule.exports = DraftEditorCompositionHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar Map = Immutable.Map;\n// Heavily based on Prosemirror's DOMObserver https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\nvar DOM_OBSERVER_OPTIONS = {\n  subtree: true,\n  characterData: true,\n  childList: true,\n  characterDataOldValue: false,\n  attributes: false\n}; // IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\n\nvar USE_CHAR_DATA = UserAgent.isBrowser('IE <= 11');\n\nvar DOMObserver = /*#__PURE__*/function () {\n  function DOMObserver(container) {\n    var _this = this;\n\n    _defineProperty(this, \"observer\", void 0);\n\n    _defineProperty(this, \"container\", void 0);\n\n    _defineProperty(this, \"mutations\", void 0);\n\n    _defineProperty(this, \"onCharData\", void 0);\n\n    this.container = container;\n    this.mutations = Map();\n    var containerWindow = getWindowForNode(container);\n\n    if (containerWindow.MutationObserver && !USE_CHAR_DATA) {\n      this.observer = new containerWindow.MutationObserver(function (mutations) {\n        return _this.registerMutations(mutations);\n      });\n    } else {\n      this.onCharData = function (e) {\n        !(e.target instanceof Node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected target to be an instance of Node') : invariant(false) : void 0;\n\n        _this.registerMutation({\n          type: 'characterData',\n          target: e.target\n        });\n      };\n    }\n  }\n\n  var _proto = DOMObserver.prototype;\n\n  _proto.start = function start() {\n    if (this.observer) {\n      this.observer.observe(this.container, DOM_OBSERVER_OPTIONS);\n    } else {\n      /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n       * type is not defined by Flow's standard library */\n      this.container.addEventListener('DOMCharacterDataModified', this.onCharData);\n    }\n  };\n\n  _proto.stopAndFlushMutations = function stopAndFlushMutations() {\n    var observer = this.observer;\n\n    if (observer) {\n      this.registerMutations(observer.takeRecords());\n      observer.disconnect();\n    } else {\n      /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n       * type is not defined by Flow's standard library */\n      this.container.removeEventListener('DOMCharacterDataModified', this.onCharData);\n    }\n\n    var mutations = this.mutations;\n    this.mutations = Map();\n    return mutations;\n  };\n\n  _proto.registerMutations = function registerMutations(mutations) {\n    for (var i = 0; i < mutations.length; i++) {\n      this.registerMutation(mutations[i]);\n    }\n  };\n\n  _proto.getMutationTextContent = function getMutationTextContent(mutation) {\n    var type = mutation.type,\n        target = mutation.target,\n        removedNodes = mutation.removedNodes;\n\n    if (type === 'characterData') {\n      // When `textContent` is '', there is a race condition that makes\n      // getting the offsetKey from the target not possible.\n      // These events are also followed by a `childList`, which is the one\n      // we are able to retrieve the offsetKey and apply the '' text.\n      if (target.textContent !== '') {\n        // IE 11 considers the enter keypress that concludes the composition\n        // as an input char. This strips that newline character so the draft\n        // state does not receive spurious newlines.\n        if (USE_CHAR_DATA) {\n          return target.textContent.replace('\\n', '');\n        }\n\n        return target.textContent;\n      }\n    } else if (type === 'childList') {\n      if (removedNodes && removedNodes.length) {\n        // `characterData` events won't happen or are ignored when\n        // removing the last character of a leaf node, what happens\n        // instead is a `childList` event with a `removedNodes` array.\n        // For this case the textContent should be '' and\n        // `DraftModifier.replaceText` will make sure the content is\n        // updated properly.\n        return '';\n      } else if (target.textContent !== '') {\n        // Typing Chinese in an empty block in MS Edge results in a\n        // `childList` event with non-empty textContent.\n        // See https://github.com/facebook/draft-js/issues/2082\n        return target.textContent;\n      }\n    }\n\n    return null;\n  };\n\n  _proto.registerMutation = function registerMutation(mutation) {\n    var textContent = this.getMutationTextContent(mutation);\n\n    if (textContent != null) {\n      var offsetKey = nullthrows(findAncestorOffsetKey(mutation.target));\n      this.mutations = this.mutations.set(offsetKey, textContent);\n    }\n  };\n\n  return DOMObserver;\n}();\n\nmodule.exports = DOMObserver;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Usage note:\n * This module makes a best effort to export the same data we would internally.\n * At Facebook we use a server-generated module that does the parsing and\n * exports the data for the client to use. We can't rely on a server-side\n * implementation in open source so instead we make use of an open source\n * library to do the heavy lifting and then make some adjustments as necessary.\n * It's likely there will be some differences. Some we can smooth over.\n * Others are going to be harder.\n */\n'use strict';\n\nvar UAParser = require(\"ua-parser-js\");\n\nvar UNKNOWN = 'Unknown';\nvar PLATFORM_MAP = {\n  'Mac OS': 'Mac OS X'\n};\n/**\n * Convert from UAParser platform name to what we expect.\n */\n\nfunction convertPlatformName(name) {\n  return PLATFORM_MAP[name] || name;\n}\n/**\n * Get the version number in parts. This is very naive. We actually get major\n * version as a part of UAParser already, which is generally good enough, but\n * let's get the minor just in case.\n */\n\n\nfunction getBrowserVersion(version) {\n  if (!version) {\n    return {\n      major: '',\n      minor: ''\n    };\n  }\n\n  var parts = version.split('.');\n  return {\n    major: parts[0],\n    minor: parts[1]\n  };\n}\n/**\n * Get the UA data fom UAParser and then convert it to the format we're\n * expecting for our APIS.\n */\n\n\nvar parser = new UAParser();\nvar results = parser.getResult(); // Do some conversion first.\n\nvar browserVersionData = getBrowserVersion(results.browser.version);\nvar uaData = {\n  browserArchitecture: results.cpu.architecture || UNKNOWN,\n  browserFullVersion: results.browser.version || UNKNOWN,\n  browserMinorVersion: browserVersionData.minor || UNKNOWN,\n  browserName: results.browser.name || UNKNOWN,\n  browserVersion: results.browser.major || UNKNOWN,\n  deviceName: results.device.model || UNKNOWN,\n  engineName: results.engine.name || UNKNOWN,\n  engineVersion: results.engine.version || UNKNOWN,\n  platformArchitecture: results.cpu.architecture || UNKNOWN,\n  platformName: convertPlatformName(results.os.name) || UNKNOWN,\n  platformVersion: results.os.version || UNKNOWN,\n  platformFullVersion: results.os.version || UNKNOWN\n};\nmodule.exports = uaData;","/*!\n * UAParser.js v0.7.22\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2019 Faisal Salman <f@faisalman.com>\n * Licensed under MIT License\n */\n\n(function (window, undefined) {\n\n    'use strict';\n\n    //////////////\n    // Constants\n    /////////////\n\n\n    var LIBVERSION  = '0.7.22',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n        MAJOR       = 'major', // deprecated\n        MODEL       = 'model',\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        EMBEDDED    = 'embedded';\n\n\n    ///////////\n    // Helper\n    //////////\n\n\n    var util = {\n        extend : function (regexes, extensions) {\n            var mergedRegexes = {};\n            for (var i in regexes) {\n                if (extensions[i] && extensions[i].length % 2 === 0) {\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\n                } else {\n                    mergedRegexes[i] = regexes[i];\n                }\n            }\n            return mergedRegexes;\n        },\n        has : function (str1, str2) {\n          if (typeof str1 === \"string\") {\n            return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n          } else {\n            return false;\n          }\n        },\n        lowerize : function (str) {\n            return str.toLowerCase();\n        },\n        major : function (version) {\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n        },\n        trim : function (str) {\n          return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n        }\n    };\n\n\n    ///////////////\n    // Map helper\n    //////////////\n\n\n    var mapper = {\n\n        rgx : function (ua, arrays) {\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length == 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length == 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length == 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        str : function (str, map) {\n\n            for (var i in map) {\n                // check if array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (util.has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (util.has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return str;\n        }\n    };\n\n\n    ///////////////\n    // String map\n    //////////////\n\n\n    var maps = {\n\n        browser : {\n            oldsafari : {\n                version : {\n                    '1.0'   : '/8',\n                    '1.2'   : '/1',\n                    '1.3'   : '/3',\n                    '2.0'   : '/412',\n                    '2.0.2' : '/416',\n                    '2.0.3' : '/417',\n                    '2.0.4' : '/419',\n                    '?'     : '/'\n                }\n            }\n        },\n\n        device : {\n            amazon : {\n                model : {\n                    'Fire Phone' : ['SD', 'KF']\n                }\n            },\n            sprint : {\n                model : {\n                    'Evo Shift 4G' : '7373KT'\n                },\n                vendor : {\n                    'HTC'       : 'APA',\n                    'Sprint'    : 'Sprint'\n                }\n            }\n        },\n\n        os : {\n            windows : {\n                version : {\n                    'ME'        : '4.90',\n                    'NT 3.11'   : 'NT3.51',\n                    'NT 4.0'    : 'NT4.0',\n                    '2000'      : 'NT 5.0',\n                    'XP'        : ['NT 5.1', 'NT 5.2'],\n                    'Vista'     : 'NT 6.0',\n                    '7'         : 'NT 6.1',\n                    '8'         : 'NT 6.2',\n                    '8.1'       : 'NT 6.3',\n                    '10'        : ['NT 6.4', 'NT 10.0'],\n                    'RT'        : 'ARM'\n                }\n            }\n        }\n    };\n\n\n    //////////////\n    // Regex map\n    /////////////\n\n\n    var regexes = {\n\n        browser : [[\n\n            // Presto based\n            /(opera\\smini)\\/([\\w\\.-]+)/i,                                       // Opera Mini\n            /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i,                      // Opera Mobi/Tablet\n            /(opera).+version\\/([\\w\\.]+)/i,                                     // Opera > 9.80\n            /(opera)[\\/\\s]+([\\w\\.]+)/i                                          // Opera < 9.80\n            ], [NAME, VERSION], [\n\n            /(opios)[\\/\\s]+([\\w\\.]+)/i                                          // Opera mini on iphone >= 8.0\n            ], [[NAME, 'Opera Mini'], VERSION], [\n\n            /\\s(opr)\\/([\\w\\.]+)/i                                               // Opera Webkit\n            ], [[NAME, 'Opera'], VERSION], [\n\n            // Mixed\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n            // Trident based\n            /(avant\\s|iemobile|slim)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n                                                                                // Avant/IEMobile/SlimBrowser\n            /(bidubrowser|baidubrowser)[\\/\\s]?([\\w\\.]+)/i,                      // Baidu Browser\n            /(?:ms|\\()(ie)\\s([\\w\\.]+)/i,                                        // Internet Explorer\n\n            // Webkit/KHTML based\n            /(rekonq)\\/([\\w\\.]*)/i,                                             // Rekonq\n            /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\\/([\\w\\.-]+)/i\n                                                                                // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n            ], [NAME, VERSION], [\n\n            /(konqueror)\\/([\\w\\.]+)/i                                           // Konqueror\n            ], [[NAME, 'Konqueror'], VERSION], [\n\n            /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i                         // IE11\n            ], [[NAME, 'IE'], VERSION], [\n\n            /(edge|edgios|edga|edg)\\/((\\d+)?[\\w\\.]+)/i                          // Microsoft Edge\n            ], [[NAME, 'Edge'], VERSION], [\n\n            /(yabrowser)\\/([\\w\\.]+)/i                                           // Yandex\n            ], [[NAME, 'Yandex'], VERSION], [\n\n            /(Avast)\\/([\\w\\.]+)/i                                               // Avast Secure Browser\n            ], [[NAME, 'Avast Secure Browser'], VERSION], [\n\n            /(AVG)\\/([\\w\\.]+)/i                                                 // AVG Secure Browser\n            ], [[NAME, 'AVG Secure Browser'], VERSION], [\n\n            /(puffin)\\/([\\w\\.]+)/i                                              // Puffin\n            ], [[NAME, 'Puffin'], VERSION], [\n\n            /(focus)\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [[NAME, 'Firefox Focus'], VERSION], [\n\n            /(opt)\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [[NAME, 'Opera Touch'], VERSION], [\n\n            /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i         // UCBrowser\n            ], [[NAME, 'UCBrowser'], VERSION], [\n\n            /(comodo_dragon)\\/([\\w\\.]+)/i                                       // Comodo Dragon\n            ], [[NAME, /_/g, ' '], VERSION], [\n\n            /(windowswechat qbcore)\\/([\\w\\.]+)/i                                // WeChat Desktop for Windows Built-in Browser\n            ], [[NAME, 'WeChat(Win) Desktop'], VERSION], [\n\n            /(micromessenger)\\/([\\w\\.]+)/i                                      // WeChat\n            ], [[NAME, 'WeChat'], VERSION], [\n\n            /(brave)\\/([\\w\\.]+)/i                                               // Brave browser\n            ], [[NAME, 'Brave'], VERSION], [\n\n            /(qqbrowserlite)\\/([\\w\\.]+)/i                                       // QQBrowserLite\n            ], [NAME, VERSION], [\n\n            /(QQ)\\/([\\d\\.]+)/i                                                  // QQ, aka ShouQ\n            ], [NAME, VERSION], [\n\n            /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i                                    // QQBrowser\n            ], [NAME, VERSION], [\n\n            /(baiduboxapp)[\\/\\s]?([\\w\\.]+)/i                                    // Baidu App\n            ], [NAME, VERSION], [\n\n            /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i                                   // 2345 Browser\n            ], [NAME, VERSION], [\n\n            /(MetaSr)[\\/\\s]?([\\w\\.]+)/i                                         // SouGouBrowser\n            ], [NAME], [\n\n            /(LBBROWSER)/i                                                      // LieBao Browser\n            ], [NAME], [\n\n            /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i                                   // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI Browser']], [\n\n            /;fbav\\/([\\w\\.]+);/i                                                // Facebook App for iOS & Android\n            ], [VERSION, [NAME, 'Facebook']], [\n\n            /safari\\s(line)\\/([\\w\\.]+)/i,                                       // Line App for iOS\n            /android.+(line)\\/([\\w\\.]+)\\/iab/i                                  // Line App for Android\n            ], [NAME, VERSION], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i                                 // Chrome Headless\n            ], [VERSION, [NAME, 'Chrome Headless']], [\n\n            /\\swv\\).+(chrome)\\/([\\w\\.]+)/i                                      // Chrome WebView\n            ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n            /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [                // Oculus / Samsung Browser\n\n            /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i        // Android Browser\n            ], [VERSION, [NAME, 'Android Browser']], [\n\n            /(sailfishbrowser)\\/([\\w\\.]+)/i                                     // Sailfish Browser\n            ], [[NAME, 'Sailfish Browser'], VERSION], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n                                                                                // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /(dolfin)\\/([\\w\\.]+)/i                                              // Dolphin\n            ], [[NAME, 'Dolphin'], VERSION], [\n\n            /(qihu|qhbrowser|qihoobrowser|360browser)/i                         // 360\n            ], [[NAME, '360 Browser']], [\n\n            /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i                             // Chrome for Android/iOS\n            ], [[NAME, 'Chrome'], VERSION], [\n\n            /(coast)\\/([\\w\\.]+)/i                                               // Opera Coast\n            ], [[NAME, 'Opera Coast'], VERSION], [\n\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, 'Firefox']], [\n\n            /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i                       // Mobile Safari\n            ], [VERSION, [NAME, 'Mobile Safari']], [\n\n            /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i                    // Safari & Safari Mobile\n            ], [VERSION, NAME], [\n\n            /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i  // Google Search Appliance on iOS\n            ], [[NAME, 'GSA'], VERSION], [\n\n            /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i                     // Safari < 3.0\n            ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(navigator|netscape)\\/([\\w\\.-]+)/i                                 // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i,                          // Mozilla\n\n            // Other\n            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n            /(links)\\s\\(([\\w\\.]+)/i,                                            // Links\n            /(gobrowser)\\/?([\\w\\.]*)/i,                                         // GoBrowser\n            /(ice\\s?browser)\\/v?([\\w\\._]+)/i,                                   // ICE Browser\n            /(mosaic)[\\/\\s]([\\w\\.]+)/i                                          // Mosaic\n            ], [NAME, VERSION]\n        ],\n\n        cpu : [[\n\n            /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i                     // AMD64\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i                                                      // IA32 (quicktime)\n            ], [[ARCHITECTURE, util.lowerize]], [\n\n            /((?:i[346]|x)86)[;\\)]/i                                            // IA32\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /windows\\s(ce|mobile);\\sppc;/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i                           // PowerPC\n            ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n            /(sun4\\w)[;\\)]/i                                                    // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, util.lowerize]]\n        ],\n\n        device : [[\n\n            /\\((ipad|playbook);[\\w\\s\\),;-]+(rim|apple)/i                        // iPad/PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/                                  // iPad\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n            /(apple\\s{0,1}tv)/i                                                 // Apple TV\n            ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple'], [TYPE, SMARTTV]], [\n\n            /(archos)\\s(gamepad2?)/i,                                           // Archos\n            /(hp).+(touchpad)/i,                                                // HP TouchPad\n            /(hp).+(tablet)/i,                                                  // HP Tablet\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /\\s(nook)[\\w\\s]+build\\/(\\w+)/i,                                     // Nook\n            /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i                                  // Dell Streak\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(kf[A-z]+)\\sbuild\\/.+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n            /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i                         // Fire Phone\n            ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n            /android.+aft([bms])\\sbuild/i                                       // Fire TV\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\n\n            /\\((ip[honed|\\s\\w*]+);.+(apple)/i                                   // iPod/iPhone\n            ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n            /\\((ip[honed|\\s\\w*]+);/i                                            // iPod/iPhone\n            ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n            /(blackberry)[\\s-]?(\\w+)/i,                                         // BlackBerry\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n                                                                                // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n            /(hp)\\s([\\w\\s]+\\w)/i,                                               // HP iPAQ\n            /(asus)-?(\\w+)/i                                                    // Asus\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /\\(bb10;\\s(\\w+)/i                                                   // BlackBerry 10\n            ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n                                                                                // Asus Tablets\n            /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone|p00c)/i\n            ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n            /(sony)\\s(tablet\\s[ps])\\sbuild\\//i,                                  // Sony\n            /(sony)?(?:sgp.+)\\sbuild\\//i\n            ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n            /android.+\\s([c-g]\\d{4}|so[-l]\\w+)(?=\\sbuild\\/|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n            /\\s(ouya)\\s/i,                                                      // Ouya\n            /(nintendo)\\s([wids3u]+)/i                                          // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n            /android.+;\\s(shield)\\sbuild/i                                      // Nvidia\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n            /(playstation\\s[34portablevi]+)/i                                   // Playstation\n            ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n            /(sprint\\s(\\w+))/i                                                  // Sprint Phones\n            ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n            /(htc)[;_\\s-]+([\\w\\s]+(?=\\)|\\sbuild)|\\w+)/i,                        // HTC\n            /(zte)-(\\w*)/i,                                                     // ZTE\n            /(alcatel|geeksphone|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n                                                                                // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            /(nexus\\s9)/i                                                       // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n            /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n            /(nexus\\s6p|vog-l29|ane-lx1|eml-l29|ele-l29)/i                              // Huawei\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n            /android.+(bah2?-a?[lw]\\d{2})/i                                     // Huawei MediaPad\n            ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [\n\n            /(microsoft);\\s(lumia[\\s\\w]+)/i                                     // Microsoft Lumia\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i                                   // Microsoft Xbox\n            ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n                                                                                // Motorola\n            /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n            /mot[\\s-]?(\\w*)/i,\n            /(XT\\d{3,4}) build\\//i,\n            /(nexus\\s6)/i\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n            /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n            ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i            // HbbTV devices\n            ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n            /\\(dtv[\\);].+(aquos)/i                                              // Sharp\n            ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n            /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n            /((SM-T\\w+))/i\n            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [                  // Samsung\n            /smart-tv.+(samsung)/i\n            ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n            /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n            /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n            /sec-((sgh\\w+))/i\n            ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n            /sie-(\\w*)/i                                                        // Siemens\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n            /(maemo|nokia).*(n900|lumia\\s\\d+)/i,                                // Nokia\n            /(nokia)[\\s_-]?([\\w-]*)/i\n            ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n            /android[x\\d\\.\\s;]+\\s([ab][1-7]\\-?[0178a]\\d\\d?)/i                   // Acer\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            /android.+([vl]k\\-?\\d{3})\\s+build/i                                 // LG Tablet\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n            /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i                     // LG Tablet\n            ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n            /(lg) netcast\\.tv/i                                                 // LG SmartTV\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /(nexus\\s[45])/i,                                                   // LG\n            /lg[e;\\s\\/-]+(\\w*)/i,\n            /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n            ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n            /(lenovo)\\s?(s(?:5000|6000)(?:[\\w-]+)|tab(?:[\\s\\w]+))/i             // Lenovo tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /android.+(ideatab[a-z0-9\\-\\s]+)/i                                  // Lenovo\n            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n            /(lenovo)[_\\s-]?([\\w-]+)/i\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /linux;.+((jolla));/i                                               // Jolla\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /((pebble))app\\/[\\d\\.]+\\s/i                                         // Pebble\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n            /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i                            // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /crkey/i                                                            // Google Chromecast\n            ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [\n\n            /android.+;\\s(glass)\\s\\d/i                                          // Google Glass\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n            /android.+;\\s(pixel c)[\\s)]/i                                       // Google Pixel C\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n            /android.+;\\s(pixel( [23])?( xl)?)[\\s)]/i                              // Google Pixel\n            ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n            /android.+;\\s(\\w+)\\s+build\\/hm\\1/i,                                 // Xiaomi Hongmi 'numeric' models\n            /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i,               // Xiaomi Hongmi\n            /android.+(mi[\\s\\-_]*(?:a\\d|one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i,    \n                                                                                // Xiaomi Mi\n            /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]?[\\w\\s]+))\\s+build/i       // Redmi Phones\n            ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n            /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]?[\\w\\s]+))\\s+build/i            // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n            /android.+;\\s(m[1-5]\\snote)\\sbuild/i                                // Meizu\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n            /(mz)-([\\w-]{2,})/i\n            ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [\n\n            /android.+a000(1)\\s+build/i,                                        // OnePlus\n            /android.+oneplus\\s(a\\d{4})[\\s)]/i\n            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n            /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i                            // RCA Tablets\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n            /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i                      // Dell Venue Tablets\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i                         // Verizon Tablet\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i     // Barnes & Noble Tablet\n            ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i                           // Barnes & Noble Tablet\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n            /android.+;\\s(k88)\\sbuild/i                                         // ZTE K Series Tablet\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i                         // Swiss GEN Mobile\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n            /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i                              // Swiss ZUR Tablet\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i                         // Zeki Tablets\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n            /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n            /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i        // Dragon Touch Tablet\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i                            // Insignia Tablets\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i                    // NextBook Tablets\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [                    // Voice Xtreme Phones\n\n            /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i                     // LvTel Phones\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n            /android.+;\\s(PH-1)\\s/i\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [                // Essential PH-1\n\n            /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i          // Envizen Tablets\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i          // Le Pan Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i                         // MachSpeed Tablets\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i                // Trinity Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /android.+[;\\/]\\s*TU_(1491)\\s+build/i                               // Rotor Tablets\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n            /android.+(KS(.+))\\s+build/i                                        // Amazon Kindle Tablets\n            ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n            /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i                      // Gigaset Tablets\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /\\s(tablet|tab)[;\\/]/i,                                             // Unidentifiable Tablet\n            /\\s(mobile)(?:[;\\/]|\\ssafari)/i                                     // Unidentifiable Mobile\n            ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n            /[\\s\\/\\(](smart-?tv)[;\\)]/i                                         // SmartTV\n            ], [[TYPE, SMARTTV]], [\n\n            /(android[\\w\\.\\s\\-]{0,9});.+build/i                                 // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+\\sedge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, 'EdgeHTML']], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,     \n                                                                                // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n            /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i,                          // KHTML/Tasman/Links\n            /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i                                      // iCab\n            ], [NAME, VERSION], [\n\n            /rv\\:([\\w\\.]{1,9}).+(gecko)/i                                       // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows based\n            /microsoft\\s(windows)\\s(vista|xp)/i                                 // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows)\\snt\\s6\\.2;\\s(arm)/i,                                     // Windows RT\n            /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i,                   // Windows Phone\n            /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n            ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n            /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n            ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n            // Mobile/Embedded OS\n            /\\((bb)(10);/i                                                      // BlackBerry 10\n            ], [[NAME, 'BlackBerry'], VERSION], [\n            /(blackberry)\\w*\\/?([\\w\\.]*)/i,                                     // Blackberry\n            /(tizen|kaios)[\\/\\s]([\\w\\.]+)/i,                                    // Tizen/KaiOS\n            /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|sailfish|contiki)[\\/\\s-]?([\\w\\.]*)/i\n                                                                                // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS\n            ], [NAME, VERSION], [\n            /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i                  // Symbian\n            ], [[NAME, 'Symbian'], VERSION], [\n            /\\((series40);/i                                                    // Series 40\n            ], [NAME], [\n            /mozilla.+\\(mobile;.+gecko.+firefox/i                               // Firefox OS\n            ], [[NAME, 'Firefox OS'], VERSION], [\n\n            // Console\n            /(nintendo|playstation)\\s([wids34portablevu]+)/i,                   // Nintendo/Playstation\n\n            // GNU/Linux based\n            /(mint)[\\/\\s\\(]?(\\w*)/i,                                            // Mint\n            /(mageia|vectorlinux)[;\\s]/i,                                       // Mageia/VectorLinux\n            /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n                                                                                // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n                                                                                // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n            /(hurd|linux)\\s?([\\w\\.]*)/i,                                        // Hurd/Linux\n            /(gnu)\\s?([\\w\\.]*)/i                                                // GNU\n            ], [NAME, VERSION], [\n\n            /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i                                       // Chromium OS\n            ], [[NAME, 'Chromium OS'], VERSION],[\n\n            // Solaris\n            /(sunos)\\s?([\\w\\.\\d]*)/i                                            // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n\n            // BSD based\n            /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i                    // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n            ], [NAME, VERSION],[\n\n            /(haiku)\\s(\\w+)/i                                                   // Haiku\n            ], [NAME, VERSION],[\n\n            /cfnetwork\\/.+darwin/i,\n            /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i             // iOS\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n            /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n            /(macintosh|mac(?=_powerpc)\\s)/i                                    // Mac OS\n            ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n            // Other\n            /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i,                             // Solaris\n            /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i,                                // AIX\n            /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i,\n                                                                                // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\n            /(unix)\\s?([\\w\\.]*)/i                                               // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n\n    /////////////////\n    // Constructor\n    ////////////////\n    var UAParser = function (uastring, extensions) {\n\n        if (typeof uastring === 'object') {\n            extensions = uastring;\n            uastring = undefined;\n        }\n\n        if (!(this instanceof UAParser)) {\n            return new UAParser(uastring, extensions).getResult();\n        }\n\n        var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n        var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n\n        this.getBrowser = function () {\n            var browser = { name: undefined, version: undefined };\n            mapper.rgx.call(browser, ua, rgxmap.browser);\n            browser.major = util.major(browser.version); // deprecated\n            return browser;\n        };\n        this.getCPU = function () {\n            var cpu = { architecture: undefined };\n            mapper.rgx.call(cpu, ua, rgxmap.cpu);\n            return cpu;\n        };\n        this.getDevice = function () {\n            var device = { vendor: undefined, model: undefined, type: undefined };\n            mapper.rgx.call(device, ua, rgxmap.device);\n            return device;\n        };\n        this.getEngine = function () {\n            var engine = { name: undefined, version: undefined };\n            mapper.rgx.call(engine, ua, rgxmap.engine);\n            return engine;\n        };\n        this.getOS = function () {\n            var os = { name: undefined, version: undefined };\n            mapper.rgx.call(os, ua, rgxmap.os);\n            return os;\n        };\n        this.getResult = function () {\n            return {\n                ua      : this.getUA(),\n                browser : this.getBrowser(),\n                engine  : this.getEngine(),\n                os      : this.getOS(),\n                device  : this.getDevice(),\n                cpu     : this.getCPU()\n            };\n        };\n        this.getUA = function () {\n            return ua;\n        };\n        this.setUA = function (uastring) {\n            ua = uastring;\n            return this;\n        };\n        return this;\n    };\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER = {\n        NAME    : NAME,\n        MAJOR   : MAJOR, // deprecated\n        VERSION : VERSION\n    };\n    UAParser.CPU = {\n        ARCHITECTURE : ARCHITECTURE\n    };\n    UAParser.DEVICE = {\n        MODEL   : MODEL,\n        VENDOR  : VENDOR,\n        TYPE    : TYPE,\n        CONSOLE : CONSOLE,\n        MOBILE  : MOBILE,\n        SMARTTV : SMARTTV,\n        TABLET  : TABLET,\n        WEARABLE: WEARABLE,\n        EMBEDDED: EMBEDDED\n    };\n    UAParser.ENGINE = {\n        NAME    : NAME,\n        VERSION : VERSION\n    };\n    UAParser.OS = {\n        NAME    : NAME,\n        VERSION : VERSION\n    };\n\n    ///////////\n    // Export\n    //////////\n\n\n    // check js environment\n    if (typeof(exports) !== UNDEF_TYPE) {\n        // nodejs env\n        if (typeof module !== UNDEF_TYPE && module.exports) {\n            exports = module.exports = UAParser;\n        }\n        exports.UAParser = UAParser;\n    } else {\n        // requirejs env (optional)\n        if (typeof(define) === 'function' && define.amd) {\n            define(function () {\n                return UAParser;\n            });\n        } else if (window) {\n            // browser env\n            window.UAParser = UAParser;\n        }\n    }\n\n    // jQuery/Zepto specific (optional)\n    // Note:\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n    //   and we should catch that.\n    var $ = window && (window.jQuery || window.Zepto);\n    if ($ && !$.ua) {\n        var parser = new UAParser();\n        $.ua = parser.getResult();\n        $.ua.get = function () {\n            return parser.getUA();\n        };\n        $.ua.set = function (uastring) {\n            parser.setUA(uastring);\n            var result = parser.getResult();\n            for (var prop in result) {\n                $.ua[prop] = result[prop];\n            }\n        };\n    }\n\n})(typeof window === 'object' ? window : this);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar componentRegex = /\\./;\nvar orRegex = /\\|\\|/;\nvar rangeRegex = /\\s+\\-\\s+/;\nvar modifierRegex = /^(<=|<|=|>=|~>|~|>|)?\\s*(.+)/;\nvar numericRegex = /^(\\d*)(.*)/;\n/**\n * Splits input `range` on \"||\" and returns true if any subrange matches\n * `version`.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\nfunction checkOrExpression(range, version) {\n  var expressions = range.split(orRegex);\n\n  if (expressions.length > 1) {\n    return expressions.some(function (range) {\n      return VersionRange.contains(range, version);\n    });\n  } else {\n    range = expressions[0].trim();\n    return checkRangeExpression(range, version);\n  }\n}\n/**\n * Splits input `range` on \" - \" (the surrounding whitespace is required) and\n * returns true if version falls between the two operands.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkRangeExpression(range, version) {\n  var expressions = range.split(rangeRegex);\n  !(expressions.length > 0 && expressions.length <= 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'the \"-\" operator expects exactly 2 operands') : invariant(false) : void 0;\n\n  if (expressions.length === 1) {\n    return checkSimpleExpression(expressions[0], version);\n  } else {\n    var startVersion = expressions[0],\n        endVersion = expressions[1];\n    !(isSimpleVersion(startVersion) && isSimpleVersion(endVersion)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'operands to the \"-\" operator must be simple (no modifiers)') : invariant(false) : void 0;\n    return checkSimpleExpression('>=' + startVersion, version) && checkSimpleExpression('<=' + endVersion, version);\n  }\n}\n/**\n * Checks if `range` matches `version`. `range` should be a \"simple\" range (ie.\n * not a compound range using the \" - \" or \"||\" operators).\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkSimpleExpression(range, version) {\n  range = range.trim();\n\n  if (range === '') {\n    return true;\n  }\n\n  var versionComponents = version.split(componentRegex);\n\n  var _getModifierAndCompon = getModifierAndComponents(range),\n      modifier = _getModifierAndCompon.modifier,\n      rangeComponents = _getModifierAndCompon.rangeComponents;\n\n  switch (modifier) {\n    case '<':\n      return checkLessThan(versionComponents, rangeComponents);\n\n    case '<=':\n      return checkLessThanOrEqual(versionComponents, rangeComponents);\n\n    case '>=':\n      return checkGreaterThanOrEqual(versionComponents, rangeComponents);\n\n    case '>':\n      return checkGreaterThan(versionComponents, rangeComponents);\n\n    case '~':\n    case '~>':\n      return checkApproximateVersion(versionComponents, rangeComponents);\n\n    default:\n      return checkEqual(versionComponents, rangeComponents);\n  }\n}\n/**\n * Checks whether `a` is less than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThan(a, b) {\n  return compareComponents(a, b) === -1;\n}\n/**\n * Checks whether `a` is less than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThanOrEqual(a, b) {\n  var result = compareComponents(a, b);\n  return result === -1 || result === 0;\n}\n/**\n * Checks whether `a` is equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkEqual(a, b) {\n  return compareComponents(a, b) === 0;\n}\n/**\n * Checks whether `a` is greater than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThanOrEqual(a, b) {\n  var result = compareComponents(a, b);\n  return result === 1 || result === 0;\n}\n/**\n * Checks whether `a` is greater than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThan(a, b) {\n  return compareComponents(a, b) === 1;\n}\n/**\n * Checks whether `a` is \"reasonably close\" to `b` (as described in\n * https://www.npmjs.org/doc/misc/semver.html). For example, if `b` is \"1.3.1\"\n * then \"reasonably close\" is defined as \">= 1.3.1 and < 1.4\".\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkApproximateVersion(a, b) {\n  var lowerBound = b.slice();\n  var upperBound = b.slice();\n\n  if (upperBound.length > 1) {\n    upperBound.pop();\n  }\n\n  var lastIndex = upperBound.length - 1;\n  var numeric = parseInt(upperBound[lastIndex], 10);\n\n  if (isNumber(numeric)) {\n    upperBound[lastIndex] = numeric + 1 + '';\n  }\n\n  return checkGreaterThanOrEqual(a, lowerBound) && checkLessThan(a, upperBound);\n}\n/**\n * Extracts the optional modifier (<, <=, =, >=, >, ~, ~>) and version\n * components from `range`.\n *\n * For example, given `range` \">= 1.2.3\" returns an object with a `modifier` of\n * `\">=\"` and `components` of `[1, 2, 3]`.\n *\n * @param {string} range\n * @returns {object}\n */\n\n\nfunction getModifierAndComponents(range) {\n  var rangeComponents = range.split(componentRegex);\n  var matches = rangeComponents[0].match(modifierRegex);\n  !matches ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expected regex to match but it did not') : invariant(false) : void 0;\n  return {\n    modifier: matches[1],\n    rangeComponents: [matches[2]].concat(rangeComponents.slice(1))\n  };\n}\n/**\n * Determines if `number` is a number.\n *\n * @param {mixed} number\n * @returns {boolean}\n */\n\n\nfunction isNumber(number) {\n  return !isNaN(number) && isFinite(number);\n}\n/**\n * Tests whether `range` is a \"simple\" version number without any modifiers\n * (\">\", \"~\" etc).\n *\n * @param {string} range\n * @returns {boolean}\n */\n\n\nfunction isSimpleVersion(range) {\n  return !getModifierAndComponents(range).modifier;\n}\n/**\n * Zero-pads array `array` until it is at least `length` long.\n *\n * @param {array} array\n * @param {number} length\n */\n\n\nfunction zeroPad(array, length) {\n  for (var i = array.length; i < length; i++) {\n    array[i] = '0';\n  }\n}\n/**\n * Normalizes `a` and `b` in preparation for comparison by doing the following:\n *\n * - zero-pads `a` and `b`\n * - marks any \"x\", \"X\" or \"*\" component in `b` as equivalent by zero-ing it out\n *   in both `a` and `b`\n * - marks any final \"*\" component in `b` as a greedy wildcard by zero-ing it\n *   and all of its successors in `a`\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {array<array<string>>}\n */\n\n\nfunction normalizeVersions(a, b) {\n  a = a.slice();\n  b = b.slice();\n  zeroPad(a, b.length); // mark \"x\" and \"*\" components as equal\n\n  for (var i = 0; i < b.length; i++) {\n    var matches = b[i].match(/^[x*]$/i);\n\n    if (matches) {\n      b[i] = a[i] = '0'; // final \"*\" greedily zeros all remaining components\n\n      if (matches[0] === '*' && i === b.length - 1) {\n        for (var j = i; j < a.length; j++) {\n          a[j] = '0';\n        }\n      }\n    }\n  }\n\n  zeroPad(b, a.length);\n  return [a, b];\n}\n/**\n * Returns the numerical -- not the lexicographical -- ordering of `a` and `b`.\n *\n * For example, `10-alpha` is greater than `2-beta`.\n *\n * @param {string} a\n * @param {string} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareNumeric(a, b) {\n  var aPrefix = a.match(numericRegex)[1];\n  var bPrefix = b.match(numericRegex)[1];\n  var aNumeric = parseInt(aPrefix, 10);\n  var bNumeric = parseInt(bPrefix, 10);\n\n  if (isNumber(aNumeric) && isNumber(bNumeric) && aNumeric !== bNumeric) {\n    return compare(aNumeric, bNumeric);\n  } else {\n    return compare(a, b);\n  }\n}\n/**\n * Returns the ordering of `a` and `b`.\n *\n * @param {string|number} a\n * @param {string|number} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compare(a, b) {\n  !(typeof a === typeof b) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '\"a\" and \"b\" must be of the same type') : invariant(false) : void 0;\n\n  if (a > b) {\n    return 1;\n  } else if (a < b) {\n    return -1;\n  } else {\n    return 0;\n  }\n}\n/**\n * Compares arrays of version components.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareComponents(a, b) {\n  var _normalizeVersions = normalizeVersions(a, b),\n      aNormalized = _normalizeVersions[0],\n      bNormalized = _normalizeVersions[1];\n\n  for (var i = 0; i < bNormalized.length; i++) {\n    var result = compareNumeric(aNormalized[i], bNormalized[i]);\n\n    if (result) {\n      return result;\n    }\n  }\n\n  return 0;\n}\n\nvar VersionRange = {\n  /**\n   * Checks whether `version` satisfies the `range` specification.\n   *\n   * We support a subset of the expressions defined in\n   * https://www.npmjs.org/doc/misc/semver.html:\n   *\n   *    version   Must match version exactly\n   *    =version  Same as just version\n   *    >version  Must be greater than version\n   *    >=version Must be greater than or equal to version\n   *    <version  Must be less than version\n   *    <=version Must be less than or equal to version\n   *    ~version  Must be at least version, but less than the next significant\n   *              revision above version:\n   *              \"~1.2.3\" is equivalent to \">= 1.2.3 and < 1.3\"\n   *    ~>version Equivalent to ~version\n   *    1.2.x     Must match \"1.2.x\", where \"x\" is a wildcard that matches\n   *              anything\n   *    1.2.*     Similar to \"1.2.x\", but \"*\" in the trailing position is a\n   *              \"greedy\" wildcard, so will match any number of additional\n   *              components:\n   *              \"1.2.*\" will match \"1.2.1\", \"1.2.1.1\", \"1.2.1.1.1\" etc\n   *    *         Any version\n   *    \"\"        (Empty string) Same as *\n   *    v1 - v2   Equivalent to \">= v1 and <= v2\"\n   *    r1 || r2  Passes if either r1 or r2 are satisfied\n   *\n   * @param {string} range\n   * @param {string} version\n   * @returns {boolean}\n   */\n  contains: function contains(range, version) {\n    return checkOrExpression(range.trim(), version.trim());\n  }\n};\nmodule.exports = VersionRange;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n *  - the property value\n *  - the property name\n *  - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\n\nfunction mapObject(object, callback, context) {\n  if (!object) {\n    return null;\n  }\n\n  var result = {};\n\n  for (var name in object) {\n    if (hasOwnProperty.call(object, name)) {\n      result[name] = callback.call(context, object[name], name, object);\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = mapObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n  var cache = {};\n  return function (string) {\n    if (!cache.hasOwnProperty(string)) {\n      cache[string] = callback.call(this, string);\n    }\n\n    return cache[string];\n  };\n}\n\nmodule.exports = memoizeStringOnly;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nmodule.exports = experimentalTreeDataSupport ? require(\"./DraftEditorContentsExperimental.react\") : require(\"./DraftEditorContents-core.react\");","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorContents.react.js for tree nodes\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlockNode = require(\"./DraftEditorBlockNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\nvar DraftEditorContentsExperimental = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorContentsExperimental, _React$Component);\n\n  function DraftEditorContentsExperimental() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorContentsExperimental.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var prevEditorState = this.props.editorState;\n    var nextEditorState = nextProps.editorState;\n    var prevDirectionMap = prevEditorState.getDirectionMap();\n    var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n    if (prevDirectionMap !== nextDirectionMap) {\n      return true;\n    }\n\n    var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n    var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n    if (didHaveFocus !== nowHasFocus) {\n      return true;\n    }\n\n    var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n    var wasComposing = prevEditorState.isInCompositionMode();\n    var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n    // rendered state, there's nothing new to be done.\n\n    if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n      return false;\n    }\n\n    var prevContent = prevEditorState.getCurrentContent();\n    var nextContent = nextEditorState.getCurrentContent();\n    var prevDecorator = prevEditorState.getDecorator();\n    var nextDecorator = nextEditorState.getDecorator();\n    return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        blockRenderMap = _this$props.blockRenderMap,\n        blockRendererFn = _this$props.blockRendererFn,\n        blockStyleFn = _this$props.blockStyleFn,\n        customStyleMap = _this$props.customStyleMap,\n        customStyleFn = _this$props.customStyleFn,\n        editorState = _this$props.editorState,\n        editorKey = _this$props.editorKey,\n        textDirectionality = _this$props.textDirectionality;\n    var content = editorState.getCurrentContent();\n    var selection = editorState.getSelection();\n    var forceSelection = editorState.mustForceSelection();\n    var decorator = editorState.getDecorator();\n    var directionMap = nullthrows(editorState.getDirectionMap());\n    var blocksAsArray = content.getBlocksAsArray();\n    var rootBlock = blocksAsArray[0];\n    var processedBlocks = [];\n    var nodeBlock = rootBlock;\n\n    while (nodeBlock) {\n      var blockKey = nodeBlock.getKey();\n      var blockProps = {\n        blockRenderMap: blockRenderMap,\n        blockRendererFn: blockRendererFn,\n        blockStyleFn: blockStyleFn,\n        contentState: content,\n        customStyleFn: customStyleFn,\n        customStyleMap: customStyleMap,\n        decorator: decorator,\n        editorKey: editorKey,\n        editorState: editorState,\n        forceSelection: forceSelection,\n        selection: selection,\n        block: nodeBlock,\n        direction: textDirectionality ? textDirectionality : directionMap.get(blockKey),\n        tree: editorState.getBlockTree(blockKey)\n      };\n      var configForType = blockRenderMap.get(nodeBlock.getType()) || blockRenderMap.get('unstyled');\n      var wrapperTemplate = configForType.wrapper;\n      processedBlocks.push({\n        /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n         * comment suppresses an error found when Flow v0.112 was deployed. To\n         * see the error delete this comment and run Flow. */\n        block: React.createElement(DraftEditorBlockNode, _extends({\n          key: blockKey\n        }, blockProps)),\n        wrapperTemplate: wrapperTemplate,\n        key: blockKey,\n        offsetKey: DraftOffsetKey.encode(blockKey, 0, 0)\n      });\n      var nextBlockKey = nodeBlock.getNextSiblingKey();\n      nodeBlock = nextBlockKey ? content.getBlockForKey(nextBlockKey) : null;\n    } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n    var outputBlocks = [];\n\n    for (var ii = 0; ii < processedBlocks.length;) {\n      var info = processedBlocks[ii];\n\n      if (info.wrapperTemplate) {\n        var blocks = [];\n\n        do {\n          blocks.push(processedBlocks[ii].block);\n          ii++;\n        } while (ii < processedBlocks.length && processedBlocks[ii].wrapperTemplate === info.wrapperTemplate);\n\n        var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n          key: info.key + '-wrap',\n          'data-offset-key': info.offsetKey\n        }, blocks);\n        outputBlocks.push(wrapperElement);\n      } else {\n        outputBlocks.push(info.block);\n        ii++;\n      }\n    }\n\n    return React.createElement(\"div\", {\n      \"data-contents\": \"true\"\n    }, outputBlocks);\n  };\n\n  return DraftEditorContentsExperimental;\n}(React.Component);\n\nmodule.exports = DraftEditorContentsExperimental;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorBlock.react.js and DraftEditorContents.react.js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorNode = require(\"./DraftEditorNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar SCROLL_BUFFER = 10;\nvar List = Immutable.List; // we should harden up the bellow flow types to make them more strict\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n  return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * We will use this helper to identify blocks that need to be wrapped but have siblings that\n * also share the same wrapper element, this way we can do the wrapping once the last sibling\n * is added.\n */\n\n\nvar shouldNotAddWrapperElement = function shouldNotAddWrapperElement(block, contentState) {\n  var nextSiblingKey = block.getNextSiblingKey();\n  return nextSiblingKey ? contentState.getBlockForKey(nextSiblingKey).getType() === block.getType() : false;\n};\n\nvar applyWrapperElementToSiblings = function applyWrapperElementToSiblings(wrapperTemplate, Element, nodes) {\n  var wrappedSiblings = []; // we check back until we find a sibling that does not have same wrapper\n\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = nodes.reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var sibling = _step.value;\n\n      if (sibling.type !== Element) {\n        break;\n      }\n\n      wrappedSiblings.push(sibling);\n    } // we now should remove from acc the wrappedSiblings and add them back under same wrap\n\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n        _iterator[\"return\"]();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n\n  nodes.splice(nodes.indexOf(wrappedSiblings[0]), wrappedSiblings.length + 1);\n  var childrenIs = wrappedSiblings.reverse();\n  var key = childrenIs[0].key;\n  nodes.push(React.cloneElement(wrapperTemplate, {\n    key: \"\".concat(key, \"-wrap\"),\n    'data-offset-key': DraftOffsetKey.encode(key, 0, 0)\n  }, childrenIs));\n  return nodes;\n};\n\nvar getDraftRenderConfig = function getDraftRenderConfig(block, blockRenderMap) {\n  var configForType = blockRenderMap.get(block.getType()) || blockRenderMap.get('unstyled');\n  var wrapperTemplate = configForType.wrapper;\n  var Element = configForType.element || blockRenderMap.get('unstyled').element;\n  return {\n    Element: Element,\n    wrapperTemplate: wrapperTemplate\n  };\n};\n\nvar getCustomRenderConfig = function getCustomRenderConfig(block, blockRendererFn) {\n  var customRenderer = blockRendererFn(block);\n\n  if (!customRenderer) {\n    return {};\n  }\n\n  var CustomComponent = customRenderer.component,\n      customProps = customRenderer.props,\n      customEditable = customRenderer.editable;\n  return {\n    CustomComponent: CustomComponent,\n    customProps: customProps,\n    customEditable: customEditable\n  };\n};\n\nvar getElementPropsConfig = function getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, ref) {\n  var elementProps = {\n    'data-block': true,\n    'data-editor': editorKey,\n    'data-offset-key': offsetKey,\n    key: block.getKey(),\n    ref: ref\n  };\n  var customClass = blockStyleFn(block);\n\n  if (customClass) {\n    elementProps.className = customClass;\n  }\n\n  if (customConfig.customEditable !== undefined) {\n    elementProps = _objectSpread({}, elementProps, {\n      contentEditable: customConfig.customEditable,\n      suppressContentEditableWarning: true\n    });\n  }\n\n  return elementProps;\n};\n\nvar DraftEditorBlockNode = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorBlockNode, _React$Component);\n\n  function DraftEditorBlockNode() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"wrapperRef\", React.createRef());\n\n    return _this;\n  }\n\n  var _proto = DraftEditorBlockNode.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var _this$props = this.props,\n        block = _this$props.block,\n        direction = _this$props.direction,\n        tree = _this$props.tree;\n    var isContainerNode = !block.getChildKeys().isEmpty();\n    var blockHasChanged = block !== nextProps.block || tree !== nextProps.tree || direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection; // if we have children at this stage we always re-render container nodes\n    // else if its a root node we avoid re-rendering by checking for block updates\n\n    return isContainerNode || blockHasChanged;\n  }\n  /**\n   * When a block is mounted and overlaps the selection state, we need to make\n   * sure that the cursor is visible to match native behavior. This may not\n   * be the case if the user has pressed `RETURN` or pasted some content, since\n   * programatically creating these new blocks and setting the DOM selection\n   * will miss out on the browser natively scrolling to that position.\n   *\n   * To replicate native behavior, if the block overlaps the selection state\n   * on mount, force the scroll position. Check the scroll state of the scroll\n   * parent, and adjust it to align the entire block to the bottom of the\n   * scroll parent.\n   */\n  ;\n\n  _proto.componentDidMount = function componentDidMount() {\n    var selection = this.props.selection;\n    var endKey = selection.getEndKey();\n\n    if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n      return;\n    }\n\n    var blockNode = this.wrapperRef.current;\n\n    if (!blockNode) {\n      // This Block Node was rendered without a wrapper element.\n      return;\n    }\n\n    var scrollParent = Style.getScrollParent(blockNode);\n    var scrollPosition = getScrollPosition(scrollParent);\n    var scrollDelta;\n\n    if (scrollParent === window) {\n      var nodePosition = getElementPosition(blockNode);\n      var nodeBottom = nodePosition.y + nodePosition.height;\n      var viewportHeight = getViewportDimensions().height;\n      scrollDelta = nodeBottom - viewportHeight;\n\n      if (scrollDelta > 0) {\n        window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n      }\n    } else {\n      !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n      var htmlBlockNode = blockNode;\n      var blockBottom = htmlBlockNode.offsetHeight + htmlBlockNode.offsetTop;\n      var scrollBottom = scrollParent.offsetHeight + scrollPosition.y;\n      scrollDelta = blockBottom - scrollBottom;\n\n      if (scrollDelta > 0) {\n        Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n      }\n    }\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props2 = this.props,\n        block = _this$props2.block,\n        blockRenderMap = _this$props2.blockRenderMap,\n        blockRendererFn = _this$props2.blockRendererFn,\n        blockStyleFn = _this$props2.blockStyleFn,\n        contentState = _this$props2.contentState,\n        decorator = _this$props2.decorator,\n        editorKey = _this$props2.editorKey,\n        editorState = _this$props2.editorState,\n        customStyleFn = _this$props2.customStyleFn,\n        customStyleMap = _this$props2.customStyleMap,\n        direction = _this$props2.direction,\n        forceSelection = _this$props2.forceSelection,\n        selection = _this$props2.selection,\n        tree = _this$props2.tree;\n    var children = null;\n\n    if (block.children.size) {\n      children = block.children.reduce(function (acc, key) {\n        var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n        var child = contentState.getBlockForKey(key);\n        var customConfig = getCustomRenderConfig(child, blockRendererFn);\n        var Component = customConfig.CustomComponent || DraftEditorBlockNode;\n\n        var _getDraftRenderConfig = getDraftRenderConfig(child, blockRenderMap),\n            Element = _getDraftRenderConfig.Element,\n            wrapperTemplate = _getDraftRenderConfig.wrapperTemplate;\n\n        var elementProps = getElementPropsConfig(child, editorKey, offsetKey, blockStyleFn, customConfig, null);\n\n        var childProps = _objectSpread({}, _this2.props, {\n          tree: editorState.getBlockTree(key),\n          blockProps: customConfig.customProps,\n          offsetKey: offsetKey,\n          block: child\n        });\n\n        acc.push(React.createElement(Element, elementProps, React.createElement(Component, childProps)));\n\n        if (!wrapperTemplate || shouldNotAddWrapperElement(child, contentState)) {\n          return acc;\n        } // if we are here it means we are the last block\n        // that has a wrapperTemplate so we should wrap itself\n        // and all other previous siblings that share the same wrapper\n\n\n        applyWrapperElementToSiblings(wrapperTemplate, Element, acc);\n        return acc;\n      }, []);\n    }\n\n    var blockKey = block.getKey();\n    var offsetKey = DraftOffsetKey.encode(blockKey, 0, 0);\n    var customConfig = getCustomRenderConfig(block, blockRendererFn);\n    var Component = customConfig.CustomComponent;\n    var blockNode = Component != null ? React.createElement(Component, _extends({}, this.props, {\n      tree: editorState.getBlockTree(blockKey),\n      blockProps: customConfig.customProps,\n      offsetKey: offsetKey,\n      block: block\n    })) : React.createElement(DraftEditorNode, {\n      block: block,\n      children: children,\n      contentState: contentState,\n      customStyleFn: customStyleFn,\n      customStyleMap: customStyleMap,\n      decorator: decorator,\n      direction: direction,\n      forceSelection: forceSelection,\n      hasSelection: isBlockOnSelectionEdge(selection, blockKey),\n      selection: selection,\n      tree: tree\n    });\n\n    if (block.getParentKey()) {\n      return blockNode;\n    }\n\n    var _getDraftRenderConfig2 = getDraftRenderConfig(block, blockRenderMap),\n        Element = _getDraftRenderConfig2.Element;\n\n    var elementProps = getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, this.wrapperRef); // root block nodes needs to be wrapped\n\n    return React.createElement(Element, elementProps, blockNode);\n  };\n\n  return DraftEditorBlockNode;\n}(React.Component);\n\nmodule.exports = DraftEditorBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorDecoratedLeaves = require(\"./DraftEditorDecoratedLeaves.react\");\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar List = Immutable.List;\n\nvar DraftEditorNode = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorNode, _React$Component);\n\n  function DraftEditorNode() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorNode.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        block = _this$props.block,\n        contentState = _this$props.contentState,\n        customStyleFn = _this$props.customStyleFn,\n        customStyleMap = _this$props.customStyleMap,\n        decorator = _this$props.decorator,\n        direction = _this$props.direction,\n        forceSelection = _this$props.forceSelection,\n        hasSelection = _this$props.hasSelection,\n        selection = _this$props.selection,\n        tree = _this$props.tree;\n    var blockKey = block.getKey();\n    var text = block.getText();\n    var lastLeafSet = tree.size - 1;\n    var children = this.props.children || tree.map(function (leafSet, ii) {\n      var decoratorKey = leafSet.get('decoratorKey');\n      var leavesForLeafSet = leafSet.get('leaves');\n      var lastLeaf = leavesForLeafSet.size - 1;\n      var Leaves = leavesForLeafSet.map(function (leaf, jj) {\n        var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n        var start = leaf.get('start');\n        var end = leaf.get('end');\n        return React.createElement(DraftEditorLeaf, {\n          key: offsetKey,\n          offsetKey: offsetKey,\n          block: block,\n          start: start,\n          selection: hasSelection ? selection : null,\n          forceSelection: forceSelection,\n          text: text.slice(start, end),\n          styleSet: block.getInlineStyleAt(start),\n          customStyleMap: customStyleMap,\n          customStyleFn: customStyleFn,\n          isLast: decoratorKey === lastLeafSet && jj === lastLeaf\n        });\n      }).toArray();\n\n      if (!decoratorKey || !decorator) {\n        return Leaves;\n      }\n\n      return React.createElement(DraftEditorDecoratedLeaves, {\n        block: block,\n        children: Leaves,\n        contentState: contentState,\n        decorator: decorator,\n        decoratorKey: decoratorKey,\n        direction: direction,\n        leafSet: leafSet,\n        text: text,\n        key: ii\n      });\n    }).toArray();\n    return React.createElement(\"div\", {\n      \"data-offset-key\": DraftOffsetKey.encode(blockKey, 0, 0),\n      className: cx({\n        'public/DraftStyleDefault/block': true,\n        'public/DraftStyleDefault/ltr': direction === 'LTR',\n        'public/DraftStyleDefault/rtl': direction === 'RTL'\n      })\n    }, children);\n  };\n\n  return DraftEditorNode;\n}(React.Component);\n\nmodule.exports = DraftEditorNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar DraftEditorDecoratedLeaves = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorDecoratedLeaves, _React$Component);\n\n  function DraftEditorDecoratedLeaves() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorDecoratedLeaves.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        block = _this$props.block,\n        children = _this$props.children,\n        contentState = _this$props.contentState,\n        decorator = _this$props.decorator,\n        decoratorKey = _this$props.decoratorKey,\n        direction = _this$props.direction,\n        leafSet = _this$props.leafSet,\n        text = _this$props.text;\n    var blockKey = block.getKey();\n    var leavesForLeafSet = leafSet.get('leaves');\n    var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n    var decoratorProps = decorator.getPropsForKey(decoratorKey);\n    var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, parseInt(decoratorKey, 10), 0);\n    var decoratedText = text.slice(leavesForLeafSet.first().get('start'), leavesForLeafSet.last().get('end')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n    // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n    var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), direction);\n    return React.createElement(DecoratorComponent, _extends({}, decoratorProps, {\n      contentState: contentState,\n      decoratedText: decoratedText,\n      dir: dir,\n      key: decoratorOffsetKey,\n      entityKey: block.getEntityAt(leafSet.get('start')),\n      offsetKey: decoratorOffsetKey\n    }), children);\n  };\n\n  return DraftEditorDecoratedLeaves;\n}(React.Component);\n\nmodule.exports = DraftEditorDecoratedLeaves;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require(\"react\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\"); // In IE, spans with <br> tags render as two newlines. By rendering a span\n// with only a newline character, we can be sure to render a single line.\n\n\nvar useNewlineChar = UserAgent.isBrowser('IE <= 11');\n/**\n * Check whether the node should be considered a newline.\n */\n\nfunction isNewline(node) {\n  return useNewlineChar ? node.textContent === '\\n' : node.tagName === 'BR';\n}\n/**\n * Placeholder elements for empty text content.\n *\n * What is this `data-text` attribute, anyway? It turns out that we need to\n * put an attribute on the lowest-level text node in order to preserve correct\n * spellcheck handling. If the <span> is naked, Chrome and Safari may do\n * bizarre things to do the DOM -- split text nodes, create extra spans, etc.\n * If the <span> has an attribute, this appears not to happen.\n * See http://jsfiddle.net/9khdavod/ for the failure case, and\n * http://jsfiddle.net/7pg143f7/ for the fixed case.\n */\n\n\nvar NEWLINE_A = function NEWLINE_A(ref) {\n  return useNewlineChar ? React.createElement(\"span\", {\n    key: \"A\",\n    \"data-text\": \"true\",\n    ref: ref\n  }, '\\n') : React.createElement(\"br\", {\n    key: \"A\",\n    \"data-text\": \"true\",\n    ref: ref\n  });\n};\n\nvar NEWLINE_B = function NEWLINE_B(ref) {\n  return useNewlineChar ? React.createElement(\"span\", {\n    key: \"B\",\n    \"data-text\": \"true\",\n    ref: ref\n  }, '\\n') : React.createElement(\"br\", {\n    key: \"B\",\n    \"data-text\": \"true\",\n    ref: ref\n  });\n};\n\n/**\n * The lowest-level component in a `DraftEditor`, the text node component\n * replaces the default React text node implementation. This allows us to\n * perform custom handling of newline behavior and avoid re-rendering text\n * nodes with DOM state that already matches the expectations of our immutable\n * editor state.\n */\nvar DraftEditorTextNode = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorTextNode, _React$Component);\n\n  function DraftEditorTextNode(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this; // By flipping this flag, we also keep flipping keys which forces\n    // React to remount this node every time it rerenders.\n\n    _defineProperty(_assertThisInitialized(_this), \"_forceFlag\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n    _this._forceFlag = false;\n    return _this;\n  }\n\n  var _proto = DraftEditorTextNode.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var node = this._node;\n    var shouldBeNewline = nextProps.children === '';\n    !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'node is not an Element') : invariant(false) : void 0;\n    var elementNode = node;\n\n    if (shouldBeNewline) {\n      return !isNewline(elementNode);\n    }\n\n    return elementNode.textContent !== nextProps.children;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._forceFlag = !this._forceFlag;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this._forceFlag = !this._forceFlag;\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    if (this.props.children === '') {\n      return this._forceFlag ? NEWLINE_A(function (ref) {\n        return _this2._node = ref;\n      }) : NEWLINE_B(function (ref) {\n        return _this2._node = ref;\n      });\n    }\n\n    return React.createElement(\"span\", {\n      key: this._forceFlag ? 'A' : 'B',\n      \"data-text\": \"true\",\n      ref: function ref(_ref) {\n        return _this2._node = _ref;\n      }\n    }, this.props.children);\n  };\n\n  return DraftEditorTextNode;\n}(React.Component);\n\nmodule.exports = DraftEditorTextNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar isIE = UserAgent.isBrowser('IE');\n\nfunction getAnonymizedDOM(node, getNodeLabels) {\n  if (!node) {\n    return '[empty]';\n  }\n\n  var anonymized = anonymizeTextWithin(node, getNodeLabels);\n\n  if (anonymized.nodeType === Node.TEXT_NODE) {\n    return anonymized.textContent;\n  }\n\n  !isElement(anonymized) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Node must be an Element if it is not a text node.') : invariant(false) : void 0;\n  var castedElement = anonymized;\n  return castedElement.outerHTML;\n}\n\nfunction anonymizeTextWithin(node, getNodeLabels) {\n  var labels = getNodeLabels !== undefined ? getNodeLabels(node) : [];\n\n  if (node.nodeType === Node.TEXT_NODE) {\n    var length = node.textContent.length;\n    return getCorrectDocumentFromNode(node).createTextNode('[text ' + length + (labels.length ? ' | ' + labels.join(', ') : '') + ']');\n  }\n\n  var clone = node.cloneNode();\n\n  if (clone.nodeType === 1 && labels.length) {\n    clone.setAttribute('data-labels', labels.join(', '));\n  }\n\n  var childNodes = node.childNodes;\n\n  for (var ii = 0; ii < childNodes.length; ii++) {\n    clone.appendChild(anonymizeTextWithin(childNodes[ii], getNodeLabels));\n  }\n\n  return clone;\n}\n\nfunction getAnonymizedEditorDOM(node, getNodeLabels) {\n  // grabbing the DOM content of the Draft editor\n  var currentNode = node; // this should only be used after checking with isElement\n\n  var castedNode = currentNode;\n\n  while (currentNode) {\n    if (isElement(currentNode) && castedNode.hasAttribute('contenteditable')) {\n      // found the Draft editor container\n      return getAnonymizedDOM(currentNode, getNodeLabels);\n    } else {\n      currentNode = currentNode.parentNode;\n      castedNode = currentNode;\n    }\n  }\n\n  return 'Could not find contentEditable parent of node';\n}\n\nfunction getNodeLength(node) {\n  return node.nodeValue === null ? node.childNodes.length : node.nodeValue.length;\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n */\n\n\nfunction setDraftEditorSelection(selectionState, node, blockKey, nodeStart, nodeEnd) {\n  // It's possible that the editor has been removed from the DOM but\n  // our selection code doesn't know it yet. Forcing selection in\n  // this case may lead to errors, so just bail now.\n  var documentObject = getCorrectDocumentFromNode(node);\n\n  if (!containsNode(documentObject.documentElement, node)) {\n    return;\n  }\n\n  var selection = documentObject.defaultView.getSelection();\n  var anchorKey = selectionState.getAnchorKey();\n  var anchorOffset = selectionState.getAnchorOffset();\n  var focusKey = selectionState.getFocusKey();\n  var focusOffset = selectionState.getFocusOffset();\n  var isBackward = selectionState.getIsBackward(); // IE doesn't support backward selection. Swap key/offset pairs.\n\n  if (!selection.extend && isBackward) {\n    var tempKey = anchorKey;\n    var tempOffset = anchorOffset;\n    anchorKey = focusKey;\n    anchorOffset = focusOffset;\n    focusKey = tempKey;\n    focusOffset = tempOffset;\n    isBackward = false;\n  }\n\n  var hasAnchor = anchorKey === blockKey && nodeStart <= anchorOffset && nodeEnd >= anchorOffset;\n  var hasFocus = focusKey === blockKey && nodeStart <= focusOffset && nodeEnd >= focusOffset; // If the selection is entirely bound within this node, set the selection\n  // and be done.\n\n  if (hasAnchor && hasFocus) {\n    selection.removeAllRanges();\n    addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n    addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n    return;\n  }\n\n  if (!isBackward) {\n    // If the anchor is within this node, set the range start.\n    if (hasAnchor) {\n      selection.removeAllRanges();\n      addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n    } // If the focus is within this node, we can assume that we have\n    // already set the appropriate start range on the selection, and\n    // can simply extend the selection.\n\n\n    if (hasFocus) {\n      addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n    }\n  } else {\n    // If this node has the focus, set the selection range to be a\n    // collapsed range beginning here. Later, when we encounter the anchor,\n    // we'll use this information to extend the selection.\n    if (hasFocus) {\n      selection.removeAllRanges();\n      addPointToSelection(selection, node, focusOffset - nodeStart, selectionState);\n    } // If this node has the anchor, we may assume that the correct\n    // focus information is already stored on the selection object.\n    // We keep track of it, reset the selection range, and extend it\n    // back to the focus point.\n\n\n    if (hasAnchor) {\n      var storedFocusNode = selection.focusNode;\n      var storedFocusOffset = selection.focusOffset;\n      selection.removeAllRanges();\n      addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n      addFocusToSelection(selection, storedFocusNode, storedFocusOffset, selectionState);\n    }\n  }\n}\n/**\n * Extend selection towards focus point.\n */\n\n\nfunction addFocusToSelection(selection, node, offset, selectionState) {\n  var activeElement = getActiveElement();\n  var extend = selection.extend; // containsNode returns false if node is null.\n  // Let's refine the type of this value out here so flow knows.\n\n  if (extend && node != null && containsNode(activeElement, node)) {\n    // If `extend` is called while another element has focus, an error is\n    // thrown. We therefore disable `extend` if the active element is somewhere\n    // other than the node we are selecting. This should only occur in Firefox,\n    // since it is the only browser to support multiple selections.\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=921444.\n    // logging to catch bug that is being reported in t16250795\n    if (offset > getNodeLength(node)) {\n      // the call to 'selection.extend' is about to throw\n      DraftJsDebugLogging.logSelectionStateFailure({\n        anonymizedDom: getAnonymizedEditorDOM(node),\n        extraParams: JSON.stringify({\n          offset: offset\n        }),\n        selectionState: JSON.stringify(selectionState.toJS())\n      });\n    } // logging to catch bug that is being reported in t18110632\n\n\n    var nodeWasFocus = node === selection.focusNode;\n\n    try {\n      // Fixes some reports of \"InvalidStateError: Failed to execute 'extend' on\n      // 'Selection': This Selection object doesn't have any Ranges.\"\n      // Note: selection.extend does not exist in IE.\n      if (selection.rangeCount > 0 && selection.extend) {\n        selection.extend(node, offset);\n      }\n    } catch (e) {\n      DraftJsDebugLogging.logSelectionStateFailure({\n        anonymizedDom: getAnonymizedEditorDOM(node, function (n) {\n          var labels = [];\n\n          if (n === activeElement) {\n            labels.push('active element');\n          }\n\n          if (n === selection.anchorNode) {\n            labels.push('selection anchor node');\n          }\n\n          if (n === selection.focusNode) {\n            labels.push('selection focus node');\n          }\n\n          return labels;\n        }),\n        extraParams: JSON.stringify({\n          activeElementName: activeElement ? activeElement.nodeName : null,\n          nodeIsFocus: node === selection.focusNode,\n          nodeWasFocus: nodeWasFocus,\n          selectionRangeCount: selection.rangeCount,\n          selectionAnchorNodeName: selection.anchorNode ? selection.anchorNode.nodeName : null,\n          selectionAnchorOffset: selection.anchorOffset,\n          selectionFocusNodeName: selection.focusNode ? selection.focusNode.nodeName : null,\n          selectionFocusOffset: selection.focusOffset,\n          message: e ? '' + e : null,\n          offset: offset\n        }, null, 2),\n        selectionState: JSON.stringify(selectionState.toJS(), null, 2)\n      }); // allow the error to be thrown -\n      // better than continuing in a broken state\n\n      throw e;\n    }\n  } else {\n    // IE doesn't support extend. This will mean no backward selection.\n    // Extract the existing selection range and add focus to it.\n    // Additionally, clone the selection range. IE11 throws an\n    // InvalidStateError when attempting to access selection properties\n    // after the range is detached.\n    if (node && selection.rangeCount > 0) {\n      var range = selection.getRangeAt(0);\n      range.setEnd(node, offset);\n      selection.addRange(range.cloneRange());\n    }\n  }\n}\n\nfunction addPointToSelection(selection, node, offset, selectionState) {\n  var range = getCorrectDocumentFromNode(node).createRange(); // logging to catch bug that is being reported in t16250795\n\n  if (offset > getNodeLength(node)) {\n    // in this case we know that the call to 'range.setStart' is about to throw\n    DraftJsDebugLogging.logSelectionStateFailure({\n      anonymizedDom: getAnonymizedEditorDOM(node),\n      extraParams: JSON.stringify({\n        offset: offset\n      }),\n      selectionState: JSON.stringify(selectionState.toJS())\n    });\n    DraftEffects.handleExtensionCausedError();\n  }\n\n  range.setStart(node, offset); // IE sometimes throws Unspecified Error when trying to addRange\n\n  if (isIE) {\n    try {\n      selection.addRange(range);\n    } catch (e) {\n      if (process.env.NODE_ENV !== \"production\") {\n        /* eslint-disable-next-line no-console */\n        console.warn('Call to selection.addRange() threw exception: ', e);\n      }\n    }\n  } else {\n    selection.addRange(range);\n  }\n}\n\nmodule.exports = {\n  setDraftEditorSelection: setDraftEditorSelection,\n  addFocusToSelection: addFocusToSelection\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar isNode = require(\"./isNode\");\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\n\n\nfunction isTextNode(object) {\n  return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n  var doc = object ? object.ownerDocument || object : document;\n  var defaultView = doc.defaultView || window;\n  return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar camelize = require(\"./camelize\");\n\nvar hyphenate = require(\"./hyphenate\");\n\nfunction asString(value)\n/*?string*/\n{\n  return value == null ? value : String(value);\n}\n\nfunction getStyleProperty(\n/*DOMNode*/\nnode,\n/*string*/\nname)\n/*?string*/\n{\n  var computedStyle; // W3C Standard\n\n  if (window.getComputedStyle) {\n    // In certain cases such as within an iframe in FF3, this returns null.\n    computedStyle = window.getComputedStyle(node, null);\n\n    if (computedStyle) {\n      return asString(computedStyle.getPropertyValue(hyphenate(name)));\n    }\n  } // Safari\n\n\n  if (document.defaultView && document.defaultView.getComputedStyle) {\n    computedStyle = document.defaultView.getComputedStyle(node, null); // A Safari bug causes this to return null for `display: none` elements.\n\n    if (computedStyle) {\n      return asString(computedStyle.getPropertyValue(hyphenate(name)));\n    }\n\n    if (name === 'display') {\n      return 'none';\n    }\n  } // Internet Explorer\n\n\n  if (node.currentStyle) {\n    if (name === 'float') {\n      return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);\n    }\n\n    return asString(node.currentStyle[camelize(name)]);\n  }\n\n  return asString(node.style && node.style[camelize(name)]);\n}\n\nmodule.exports = getStyleProperty;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _hyphenPattern = /-(.)/g;\n/**\n * Camelcases a hyphenated string, for example:\n *\n *   > camelize('background-color')\n *   < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelize(string) {\n  return string.replace(_hyphenPattern, function (_, character) {\n    return character.toUpperCase();\n  });\n}\n\nmodule.exports = camelize;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _uppercasePattern = /([A-Z])/g;\n/**\n * Hyphenates a camelcased string, for example:\n *\n *   > hyphenate('backgroundColor')\n *   < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenate(string) {\n  return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar containsNode = require(\"./containsNode\");\n/**\n * Gets an element's bounding rect in pixels relative to the viewport.\n *\n * @param {DOMElement} elem\n * @return {object}\n */\n\n\nfunction getElementRect(elem) {\n  var docElem = elem.ownerDocument.documentElement; // FF 2, Safari 3 and Opera 9.5- do not support getBoundingClientRect().\n  // IE9- will throw if the element is not in the document.\n\n  if (!('getBoundingClientRect' in elem) || !containsNode(docElem, elem)) {\n    return {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n  } // Subtracts clientTop/Left because IE8- added a 2px border to the\n  // <html> element (see http://fburl.com/1493213). IE 7 in\n  // Quicksmode does not report clientLeft/clientTop so there\n  // will be an unaccounted offset of 2px when in quirksmode\n\n\n  var rect = elem.getBoundingClientRect();\n  return {\n    left: Math.round(rect.left) - docElem.clientLeft,\n    right: Math.round(rect.right) - docElem.clientLeft,\n    top: Math.round(rect.top) - docElem.clientTop,\n    bottom: Math.round(rect.bottom) - docElem.clientTop\n  };\n}\n\nmodule.exports = getElementRect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar isWebkit = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('AppleWebKit') > -1;\n/**\n * Gets the element with the document scroll properties such as `scrollLeft` and\n * `scrollHeight`. This may differ across different browsers.\n *\n * NOTE: The return value can be null if the DOM is not yet ready.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getDocumentScrollElement(doc) {\n  doc = doc || document;\n\n  if (doc.scrollingElement) {\n    return doc.scrollingElement;\n  }\n\n  return !isWebkit && doc.compatMode === 'CSS1Compat' ? doc.documentElement : doc.body;\n}\n\nmodule.exports = getDocumentScrollElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n  if (scrollable.Window && scrollable instanceof scrollable.Window) {\n    return {\n      x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n      y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n    };\n  }\n\n  return {\n    x: scrollable.scrollLeft,\n    y: scrollable.scrollTop\n  };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar joinClasses = require(\"fbjs/lib/joinClasses\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Provide default styling for list items. This way, lists will be styled with\n * proper counters and indentation even if the caller does not specify\n * their own styling at all. If more than five levels of nesting are needed,\n * the necessary CSS classes can be provided via `blockStyleFn` configuration.\n */\nvar getListItemClasses = function getListItemClasses(type, depth, shouldResetCount, direction) {\n  return cx({\n    'public/DraftStyleDefault/unorderedListItem': type === 'unordered-list-item',\n    'public/DraftStyleDefault/orderedListItem': type === 'ordered-list-item',\n    'public/DraftStyleDefault/reset': shouldResetCount,\n    'public/DraftStyleDefault/depth0': depth === 0,\n    'public/DraftStyleDefault/depth1': depth === 1,\n    'public/DraftStyleDefault/depth2': depth === 2,\n    'public/DraftStyleDefault/depth3': depth === 3,\n    'public/DraftStyleDefault/depth4': depth >= 4,\n    'public/DraftStyleDefault/listLTR': direction === 'LTR',\n    'public/DraftStyleDefault/listRTL': direction === 'RTL'\n  });\n};\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\n\n\nvar DraftEditorContents = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorContents, _React$Component);\n\n  function DraftEditorContents() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorContents.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var prevEditorState = this.props.editorState;\n    var nextEditorState = nextProps.editorState;\n    var prevDirectionMap = prevEditorState.getDirectionMap();\n    var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n    if (prevDirectionMap !== nextDirectionMap) {\n      return true;\n    }\n\n    var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n    var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n    if (didHaveFocus !== nowHasFocus) {\n      return true;\n    }\n\n    var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n    var wasComposing = prevEditorState.isInCompositionMode();\n    var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n    // rendered state, there's nothing new to be done.\n\n    if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n      return false;\n    }\n\n    var prevContent = prevEditorState.getCurrentContent();\n    var nextContent = nextEditorState.getCurrentContent();\n    var prevDecorator = prevEditorState.getDecorator();\n    var nextDecorator = nextEditorState.getDecorator();\n    return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        blockRenderMap = _this$props.blockRenderMap,\n        blockRendererFn = _this$props.blockRendererFn,\n        blockStyleFn = _this$props.blockStyleFn,\n        customStyleMap = _this$props.customStyleMap,\n        customStyleFn = _this$props.customStyleFn,\n        editorState = _this$props.editorState,\n        editorKey = _this$props.editorKey,\n        preventScroll = _this$props.preventScroll,\n        textDirectionality = _this$props.textDirectionality;\n    var content = editorState.getCurrentContent();\n    var selection = editorState.getSelection();\n    var forceSelection = editorState.mustForceSelection();\n    var decorator = editorState.getDecorator();\n    var directionMap = nullthrows(editorState.getDirectionMap());\n    var blocksAsArray = content.getBlocksAsArray();\n    var processedBlocks = [];\n    var currentDepth = null;\n    var lastWrapperTemplate = null;\n\n    for (var ii = 0; ii < blocksAsArray.length; ii++) {\n      var _block = blocksAsArray[ii];\n\n      var key = _block.getKey();\n\n      var blockType = _block.getType();\n\n      var customRenderer = blockRendererFn(_block);\n      var CustomComponent = void 0,\n          customProps = void 0,\n          customEditable = void 0;\n\n      if (customRenderer) {\n        CustomComponent = customRenderer.component;\n        customProps = customRenderer.props;\n        customEditable = customRenderer.editable;\n      }\n\n      var direction = textDirectionality ? textDirectionality : directionMap.get(key);\n      var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n      var componentProps = {\n        contentState: content,\n        block: _block,\n        blockProps: customProps,\n        blockStyleFn: blockStyleFn,\n        customStyleMap: customStyleMap,\n        customStyleFn: customStyleFn,\n        decorator: decorator,\n        direction: direction,\n        forceSelection: forceSelection,\n        offsetKey: offsetKey,\n        preventScroll: preventScroll,\n        selection: selection,\n        tree: editorState.getBlockTree(key)\n      };\n      var configForType = blockRenderMap.get(blockType) || blockRenderMap.get('unstyled');\n      var wrapperTemplate = configForType.wrapper;\n      var Element = configForType.element || blockRenderMap.get('unstyled').element;\n\n      var depth = _block.getDepth();\n\n      var _className = '';\n\n      if (blockStyleFn) {\n        _className = blockStyleFn(_block);\n      } // List items are special snowflakes, since we handle nesting and\n      // counters manually.\n\n\n      if (Element === 'li') {\n        var shouldResetCount = lastWrapperTemplate !== wrapperTemplate || currentDepth === null || depth > currentDepth;\n        _className = joinClasses(_className, getListItemClasses(blockType, depth, shouldResetCount, direction));\n      }\n\n      var Component = CustomComponent || DraftEditorBlock;\n      var childProps = {\n        className: _className,\n        'data-block': true,\n        'data-editor': editorKey,\n        'data-offset-key': offsetKey,\n        key: key\n      };\n\n      if (customEditable !== undefined) {\n        childProps = _objectSpread({}, childProps, {\n          contentEditable: customEditable,\n          suppressContentEditableWarning: true\n        });\n      }\n\n      var child = React.createElement(Element, childProps,\n      /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n       * comment suppresses an error found when Flow v0.112 was deployed. To\n       * see the error delete this comment and run Flow. */\n      React.createElement(Component, _extends({}, componentProps, {\n        key: key\n      })));\n      processedBlocks.push({\n        block: child,\n        wrapperTemplate: wrapperTemplate,\n        key: key,\n        offsetKey: offsetKey\n      });\n\n      if (wrapperTemplate) {\n        currentDepth = _block.getDepth();\n      } else {\n        currentDepth = null;\n      }\n\n      lastWrapperTemplate = wrapperTemplate;\n    } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n    var outputBlocks = [];\n\n    for (var _ii = 0; _ii < processedBlocks.length;) {\n      var info = processedBlocks[_ii];\n\n      if (info.wrapperTemplate) {\n        var blocks = [];\n\n        do {\n          blocks.push(processedBlocks[_ii].block);\n          _ii++;\n        } while (_ii < processedBlocks.length && processedBlocks[_ii].wrapperTemplate === info.wrapperTemplate);\n\n        var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n          key: info.key + '-wrap',\n          'data-offset-key': info.offsetKey\n        }, blocks);\n        outputBlocks.push(wrapperElement);\n      } else {\n        outputBlocks.push(info.block);\n        _ii++;\n      }\n    }\n\n    return React.createElement(\"div\", {\n      \"data-contents\": \"true\"\n    }, outputBlocks);\n  };\n\n  return DraftEditorContents;\n}(React.Component);\n\nmodule.exports = DraftEditorContents;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Combines multiple className strings into one.\n */\n\nfunction joinClasses(className) {\n  var newClassName = className || '';\n  var argLength = arguments.length;\n\n  if (argLength > 1) {\n    for (var index = 1; index < argLength; index++) {\n      var nextClass = arguments[index];\n\n      if (nextClass) {\n        newClassName = (newClassName ? newClassName + ' ' : '') + nextClass;\n      }\n    }\n  }\n\n  return newClassName;\n}\n\nmodule.exports = joinClasses;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n/**\n * Get a SelectionState for the supplied mouse event.\n */\n\n\nfunction getSelectionForEvent(event, editorState) {\n  var node = null;\n  var offset = null;\n  var eventTargetDocument = getCorrectDocumentFromNode(event.currentTarget);\n  /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n   * suppresses an error found when Flow v0.68 was deployed. To see the error\n   * delete this comment and run Flow. */\n\n  if (typeof eventTargetDocument.caretRangeFromPoint === 'function') {\n    /* $FlowFixMe[incompatible-use] (>=0.68.0 site=www,mobile) This comment\n     * suppresses an error found when Flow v0.68 was deployed. To see the error\n     * delete this comment and run Flow. */\n    var dropRange = eventTargetDocument.caretRangeFromPoint(event.x, event.y);\n    node = dropRange.startContainer;\n    offset = dropRange.startOffset;\n  } else if (event.rangeParent) {\n    node = event.rangeParent;\n    offset = event.rangeOffset;\n  } else {\n    return null;\n  }\n\n  node = nullthrows(node);\n  offset = nullthrows(offset);\n  var offsetKey = nullthrows(findAncestorOffsetKey(node));\n  return getUpdatedSelectionState(editorState, offsetKey, offset, offsetKey, offset);\n}\n\nvar DraftEditorDragHandler = {\n  /**\n   * Drag originating from input terminated.\n   */\n  onDragEnd: function onDragEnd(editor) {\n    editor.exitCurrentMode();\n    endDrag(editor);\n  },\n\n  /**\n   * Handle data being dropped.\n   */\n  onDrop: function onDrop(editor, e) {\n    var data = new DataTransfer(e.nativeEvent.dataTransfer);\n    var editorState = editor._latestEditorState;\n    var dropSelection = getSelectionForEvent(e.nativeEvent, editorState);\n    e.preventDefault();\n    editor._dragCount = 0;\n    editor.exitCurrentMode();\n\n    if (dropSelection == null) {\n      return;\n    }\n\n    var files = data.getFiles();\n\n    if (files.length > 0) {\n      if (editor.props.handleDroppedFiles && isEventHandled(editor.props.handleDroppedFiles(dropSelection, files))) {\n        return;\n      }\n      /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n       * DataTransfer was typed. getFiles() returns an array of <Files extends\n       * Blob>, not Blob */\n\n\n      getTextContentFromFiles(files, function (fileText) {\n        fileText && editor.update(insertTextAtSelection(editorState, dropSelection, fileText));\n      });\n      return;\n    }\n\n    var dragType = editor._internalDrag ? 'internal' : 'external';\n\n    if (editor.props.handleDrop && isEventHandled(editor.props.handleDrop(dropSelection, data, dragType))) {// handled\n    } else if (editor._internalDrag) {\n      editor.update(moveText(editorState, dropSelection));\n    } else {\n      editor.update(insertTextAtSelection(editorState, dropSelection, data.getText()));\n    }\n\n    endDrag(editor);\n  }\n};\n\nfunction endDrag(editor) {\n  editor._internalDrag = false; // Fix issue #1383\n  // Prior to React v16.5.0 onDrop breaks onSelect event:\n  // https://github.com/facebook/react/issues/11379.\n  // Dispatching a mouseup event on DOM node will make it go back to normal.\n\n  var editorNode = editor.editorContainer;\n\n  if (editorNode) {\n    var mouseUpEvent = new MouseEvent('mouseup', {\n      view: getWindowForNode(editorNode),\n      bubbles: true,\n      cancelable: true\n    });\n    editorNode.dispatchEvent(mouseUpEvent);\n  }\n}\n\nfunction moveText(editorState, targetSelection) {\n  var newContentState = DraftModifier.moveText(editorState.getCurrentContent(), editorState.getSelection(), targetSelection);\n  return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n/**\n * Insert text at a specified selection.\n */\n\n\nfunction insertTextAtSelection(editorState, selection, text) {\n  var newContentState = DraftModifier.insertText(editorState.getCurrentContent(), selection, text, editorState.getCurrentInlineStyle());\n  return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n\nmodule.exports = DraftEditorDragHandler;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar PhotosMimeType = {\n  isImage: function isImage(mimeString) {\n    return getParts(mimeString)[0] === 'image';\n  },\n  isJpeg: function isJpeg(mimeString) {\n    var parts = getParts(mimeString);\n    return PhotosMimeType.isImage(mimeString) && ( // see http://fburl.com/10972194\n    parts[1] === 'jpeg' || parts[1] === 'pjpeg');\n  }\n};\n\nfunction getParts(mimeString) {\n  return mimeString.split('/');\n}\n\nmodule.exports = PhotosMimeType;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar invariant = require(\"./invariant\");\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\n\n\nfunction toArray(obj) {\n  var length = obj.length; // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n  // in old versions of Safari).\n\n  !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n  !(typeof length === 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n  !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n  !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n  // without method will throw during the slice call and skip straight to the\n  // fallback.\n\n  if (obj.hasOwnProperty) {\n    try {\n      return Array.prototype.slice.call(obj);\n    } catch (e) {// IE < 9 does not support Array#slice on collections objects\n    }\n  } // Fall back to copying key by key. This assumes all keys have a value,\n  // so will not preserve sparsely populated inputs.\n\n\n  var ret = Array(length);\n\n  for (var ii = 0; ii < length; ii++) {\n    ret[ii] = obj[ii];\n  }\n\n  return ret;\n}\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n *   A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n *   Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\n\n\nfunction hasArrayNature(obj) {\n  return (// not null/false\n    !!obj && ( // arrays are objects, NodeLists are functions in Safari\n    typeof obj == 'object' || typeof obj == 'function') && // quacks like an array\n    'length' in obj && // not window\n    !('setInterval' in obj) && // no DOM node should be considered an array-like\n    // a 'select' element has 'length' and 'item' properties on IE8\n    typeof obj.nodeType != 'number' && ( // a real array\n    Array.isArray(obj) || // arguments\n    'callee' in obj || // HTMLCollection/NodeList\n    'item' in obj)\n  );\n}\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n *   var createArrayFromMixed = require('createArrayFromMixed');\n *\n *   function takesOneOrMoreThings(things) {\n *     things = createArrayFromMixed(things);\n *     ...\n *   }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\n\n\nfunction createArrayFromMixed(obj) {\n  if (!hasArrayNature(obj)) {\n    return [obj];\n  } else if (Array.isArray(obj)) {\n    return obj.slice();\n  } else {\n    return toArray(obj);\n  }\n}\n\nmodule.exports = createArrayFromMixed;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar onBeforeInput = require(\"./editOnBeforeInput\");\n\nvar onBlur = require(\"./editOnBlur\");\n\nvar onCompositionStart = require(\"./editOnCompositionStart\");\n\nvar onCopy = require(\"./editOnCopy\");\n\nvar onCut = require(\"./editOnCut\");\n\nvar onDragOver = require(\"./editOnDragOver\");\n\nvar onDragStart = require(\"./editOnDragStart\");\n\nvar onFocus = require(\"./editOnFocus\");\n\nvar onInput = require(\"./editOnInput\");\n\nvar onKeyDown = require(\"./editOnKeyDown\");\n\nvar onPaste = require(\"./editOnPaste\");\n\nvar onSelect = require(\"./editOnSelect\");\n\nvar isChrome = UserAgent.isBrowser('Chrome');\nvar isFirefox = UserAgent.isBrowser('Firefox');\nvar selectionHandler = isChrome || isFirefox ? onSelect : function (e) {};\nvar DraftEditorEditHandler = {\n  onBeforeInput: onBeforeInput,\n  onBlur: onBlur,\n  onCompositionStart: onCompositionStart,\n  onCopy: onCopy,\n  onCut: onCut,\n  onDragOver: onDragOver,\n  onDragStart: onDragStart,\n  onFocus: onFocus,\n  onInput: onInput,\n  onKeyDown: onKeyDown,\n  onPaste: onPaste,\n  onSelect: onSelect,\n  // In certain cases, contenteditable on chrome does not fire the onSelect\n  // event, causing problems with cursor positioning. Therefore, the selection\n  // state update handler is added to more events to ensure that the selection\n  // state is always synced with the actual cursor positions.\n  onMouseUp: selectionHandler,\n  onKeyUp: selectionHandler\n};\nmodule.exports = DraftEditorEditHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar isSelectionAtLeafStart = require(\"./isSelectionAtLeafStart\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar setImmediate = require(\"fbjs/lib/setImmediate\"); // When nothing is focused, Firefox regards two characters, `'` and `/`, as\n// commands that should open and focus the \"quickfind\" search bar. This should\n// *never* happen while a contenteditable is focused, but as of v28, it\n// sometimes does, even when the keypress event target is the contenteditable.\n// This breaks the input. Special case these characters to ensure that when\n// they are typed, we prevent default on the event to make sure not to\n// trigger quickfind.\n\n\nvar FF_QUICKFIND_CHAR = \"'\";\nvar FF_QUICKFIND_LINK_CHAR = '/';\nvar isFirefox = UserAgent.isBrowser('Firefox');\n\nfunction mustPreventDefaultForCharacter(character) {\n  return isFirefox && (character == FF_QUICKFIND_CHAR || character == FF_QUICKFIND_LINK_CHAR);\n}\n/**\n * Replace the current selection with the specified text string, with the\n * inline style and entity key applied to the newly inserted text.\n */\n\n\nfunction replaceText(editorState, text, inlineStyle, entityKey, forceSelection) {\n  var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), text, inlineStyle, entityKey);\n  return EditorState.push(editorState, contentState, 'insert-characters', forceSelection);\n}\n/**\n * When `onBeforeInput` executes, the browser is attempting to insert a\n * character into the editor. Apply this character data to the document,\n * allowing native insertion if possible.\n *\n * Native insertion is encouraged in order to limit re-rendering and to\n * preserve spellcheck highlighting, which disappears or flashes if re-render\n * occurs on the relevant text nodes.\n */\n\n\nfunction editOnBeforeInput(editor, e) {\n  if (editor._pendingStateFromBeforeInput !== undefined) {\n    editor.update(editor._pendingStateFromBeforeInput);\n    editor._pendingStateFromBeforeInput = undefined;\n  }\n\n  var editorState = editor._latestEditorState;\n  var chars = e.data; // In some cases (ex: IE ideographic space insertion) no character data\n  // is provided. There's nothing to do when this happens.\n\n  if (!chars) {\n    return;\n  } // Allow the top-level component to handle the insertion manually. This is\n  // useful when triggering interesting behaviors for a character insertion,\n  // Simple examples: replacing a raw text ':)' with a smile emoji or image\n  // decorator, or setting a block to be a list item after typing '- ' at the\n  // start of the block.\n\n\n  if (editor.props.handleBeforeInput && isEventHandled(editor.props.handleBeforeInput(chars, editorState, e.timeStamp))) {\n    e.preventDefault();\n    return;\n  } // If selection is collapsed, conditionally allow native behavior. This\n  // reduces re-renders and preserves spellcheck highlighting. If the selection\n  // is not collapsed, we will re-render.\n\n\n  var selection = editorState.getSelection();\n  var selectionStart = selection.getStartOffset();\n  var anchorKey = selection.getAnchorKey();\n\n  if (!selection.isCollapsed()) {\n    e.preventDefault();\n    editor.update(replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), true));\n    return;\n  }\n\n  var newEditorState = replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), false); // Bunch of different cases follow where we need to prevent native insertion.\n\n  var mustPreventNative = false;\n\n  if (!mustPreventNative) {\n    // Browsers tend to insert text in weird places in the DOM when typing at\n    // the start of a leaf, so we'll handle it ourselves.\n    mustPreventNative = isSelectionAtLeafStart(editor._latestCommittedEditorState);\n  }\n\n  if (!mustPreventNative) {\n    // Let's say we have a decorator that highlights hashtags. In many cases\n    // we need to prevent native behavior and rerender ourselves --\n    // particularly, any case *except* where the inserted characters end up\n    // anywhere except exactly where you put them.\n    //\n    // Using [] to denote a decorated leaf, some examples:\n    //\n    // 1. 'hi #' and append 'f'\n    // desired rendering: 'hi [#f]'\n    // native rendering would be: 'hi #f' (incorrect)\n    //\n    // 2. 'x [#foo]' and insert '#' before 'f'\n    // desired rendering: 'x #[#foo]'\n    // native rendering would be: 'x [##foo]' (incorrect)\n    //\n    // 3. '[#foobar]' and insert ' ' between 'foo' and 'bar'\n    // desired rendering: '[#foo] bar'\n    // native rendering would be: '[#foo bar]' (incorrect)\n    //\n    // 4. '[#foo]' and delete '#' [won't use this beforeinput codepath though]\n    // desired rendering: 'foo'\n    // native rendering would be: '[foo]' (incorrect)\n    //\n    // 5. '[#foo]' and append 'b'\n    // desired rendering: '[#foob]'\n    // native rendering would be: '[#foob]'\n    // (native insertion here would be ok for decorators like simple spans,\n    // but not more complex decorators. To be safe, we need to prevent it.)\n    //\n    // It is safe to allow native insertion if and only if the full list of\n    // decorator ranges matches what we expect native insertion to give, and\n    // the range lengths have not changed. We don't need to compare the content\n    // because the only possible mutation to consider here is inserting plain\n    // text and decorators can't affect text content.\n    var oldBlockTree = editorState.getBlockTree(anchorKey);\n    var newBlockTree = newEditorState.getBlockTree(anchorKey);\n    mustPreventNative = oldBlockTree.size !== newBlockTree.size || oldBlockTree.zip(newBlockTree).some(function (_ref) {\n      var oldLeafSet = _ref[0],\n          newLeafSet = _ref[1];\n      // selectionStart is guaranteed to be selectionEnd here\n      var oldStart = oldLeafSet.get('start');\n      var adjustedStart = oldStart + (oldStart >= selectionStart ? chars.length : 0);\n      var oldEnd = oldLeafSet.get('end');\n      var adjustedEnd = oldEnd + (oldEnd >= selectionStart ? chars.length : 0);\n      var newStart = newLeafSet.get('start');\n      var newEnd = newLeafSet.get('end');\n      var newDecoratorKey = newLeafSet.get('decoratorKey');\n      return (// Different decorators\n        oldLeafSet.get('decoratorKey') !== newDecoratorKey || // Different number of inline styles\n        oldLeafSet.get('leaves').size !== newLeafSet.get('leaves').size || // Different effective decorator position\n        adjustedStart !== newStart || adjustedEnd !== newEnd || // Decorator already existed and its length changed\n        newDecoratorKey != null && newEnd - newStart !== oldEnd - oldStart\n      );\n    });\n  }\n\n  if (!mustPreventNative) {\n    mustPreventNative = mustPreventDefaultForCharacter(chars);\n  }\n\n  if (!mustPreventNative) {\n    mustPreventNative = nullthrows(newEditorState.getDirectionMap()).get(anchorKey) !== nullthrows(editorState.getDirectionMap()).get(anchorKey);\n  }\n\n  if (mustPreventNative) {\n    e.preventDefault();\n    newEditorState = EditorState.set(newEditorState, {\n      forceSelection: true\n    });\n    editor.update(newEditorState);\n    return;\n  } // We made it all the way! Let the browser do its thing and insert the char.\n\n\n  newEditorState = EditorState.set(newEditorState, {\n    nativelyRenderedContent: newEditorState.getCurrentContent()\n  }); // The native event is allowed to occur. To allow user onChange handlers to\n  // change the inserted text, we wait until the text is actually inserted\n  // before we actually update our state. That way when we rerender, the text\n  // we see in the DOM will already have been inserted properly.\n\n  editor._pendingStateFromBeforeInput = newEditorState;\n  setImmediate(function () {\n    if (editor._pendingStateFromBeforeInput !== undefined) {\n      editor.update(editor._pendingStateFromBeforeInput);\n      editor._pendingStateFromBeforeInput = undefined;\n    }\n  });\n}\n\nmodule.exports = editOnBeforeInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction isSelectionAtLeafStart(editorState) {\n  var selection = editorState.getSelection();\n  var anchorKey = selection.getAnchorKey();\n  var blockTree = editorState.getBlockTree(anchorKey);\n  var offset = selection.getStartOffset();\n  var isAtStart = false;\n  blockTree.some(function (leafSet) {\n    if (offset === leafSet.get('start')) {\n      isAtStart = true;\n      return true;\n    }\n\n    if (offset < leafSet.get('end')) {\n      return leafSet.get('leaves').some(function (leaf) {\n        var leafStart = leaf.get('start');\n\n        if (offset === leafStart) {\n          isAtStart = true;\n          return true;\n        }\n\n        return false;\n      });\n    }\n\n    return false;\n  });\n  return isAtStart;\n}\n\nmodule.exports = isSelectionAtLeafStart;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict'; // setimmediate adds setImmediate to the global. We want to make sure we export\n// the actual function.\n\nrequire(\"setimmediate\");\n\nmodule.exports = global.setImmediate;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nfunction editOnBlur(editor, e) {\n  // In a contentEditable element, when you select a range and then click\n  // another active element, this does trigger a `blur` event but will not\n  // remove the DOM selection from the contenteditable.\n  // This is consistent across all browsers, but we prefer that the editor\n  // behave like a textarea, where a `blur` event clears the DOM selection.\n  // We therefore force the issue to be certain, checking whether the active\n  // element is `body` to force it when blurring occurs within the window (as\n  // opposed to clicking to another tab or window).\n  var ownerDocument = e.currentTarget.ownerDocument;\n\n  if ( // This ESLint rule conflicts with `sketchy-null-bool` flow check\n  // eslint-disable-next-line no-extra-boolean-cast\n  !Boolean(editor.props.preserveSelectionOnBlur) && getActiveElement(ownerDocument) === ownerDocument.body) {\n    var _selection = ownerDocument.defaultView.getSelection();\n\n    var editorNode = editor.editor;\n\n    if (_selection.rangeCount === 1 && containsNode(editorNode, _selection.anchorNode) && containsNode(editorNode, _selection.focusNode)) {\n      _selection.removeAllRanges();\n    }\n  }\n\n  var editorState = editor._latestEditorState;\n  var currentSelection = editorState.getSelection();\n\n  if (!currentSelection.getHasFocus()) {\n    return;\n  }\n\n  var selection = currentSelection.set('hasFocus', false);\n  editor.props.onBlur && editor.props.onBlur(e);\n  editor.update(EditorState.acceptSelection(editorState, selection));\n}\n\nmodule.exports = editOnBlur;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * The user has begun using an IME input system. Switching to `composite` mode\n * allows handling composition input and disables other edit behavior.\n */\n\n\nfunction editOnCompositionStart(editor, e) {\n  editor.setMode('composite');\n  editor.update(EditorState.set(editor._latestEditorState, {\n    inCompositionMode: true\n  })); // Allow composition handler to interpret the compositionstart event\n\n  editor._onCompositionStart(e);\n}\n\nmodule.exports = editOnCompositionStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n/**\n * If we have a selection, create a ContentState fragment and store\n * it in our internal clipboard. Subsequent paste events will use this\n * fragment if no external clipboard data is supplied.\n */\n\n\nfunction editOnCopy(editor, e) {\n  var editorState = editor._latestEditorState;\n  var selection = editorState.getSelection(); // No selection, so there's nothing to copy.\n\n  if (selection.isCollapsed()) {\n    e.preventDefault();\n    return;\n  }\n\n  editor.setClipboard(getFragmentFromSelection(editor._latestEditorState));\n}\n\nmodule.exports = editOnCopy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar isNode = require(\"./isInstanceOfNode\");\n/**\n * On `cut` events, native behavior is allowed to occur so that the system\n * clipboard is set properly. This means that we need to take steps to recover\n * the editor DOM state after the `cut` has occurred in order to maintain\n * control of the component.\n *\n * In addition, we can keep a copy of the removed fragment, including all\n * styles and entities, for use as an internal paste.\n */\n\n\nfunction editOnCut(editor, e) {\n  var editorState = editor._latestEditorState;\n  var selection = editorState.getSelection();\n  var element = e.target;\n  var scrollPosition; // No selection, so there's nothing to cut.\n\n  if (selection.isCollapsed()) {\n    e.preventDefault();\n    return;\n  } // Track the current scroll position so that it can be forced back in place\n  // after the editor regains control of the DOM.\n\n\n  if (isNode(element)) {\n    var node = element;\n    scrollPosition = getScrollPosition(Style.getScrollParent(node));\n  }\n\n  var fragment = getFragmentFromSelection(editorState);\n  editor.setClipboard(fragment); // Set `cut` mode to disable all event handling temporarily.\n\n  editor.setMode('cut'); // Let native `cut` behavior occur, then recover control.\n\n  setTimeout(function () {\n    editor.restoreEditorDOM(scrollPosition);\n    editor.exitCurrentMode();\n    editor.update(removeFragment(editorState));\n  }, 0);\n}\n\nfunction removeFragment(editorState) {\n  var newContent = DraftModifier.removeRange(editorState.getCurrentContent(), editorState.getSelection(), 'forward');\n  return EditorState.push(editorState, newContent, 'remove-range');\n}\n\nmodule.exports = editOnCut;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isInstanceOfNode(target) {\n  // we changed the name because of having duplicate module provider (fbjs)\n  if (!target || !('ownerDocument' in target)) {\n    return false;\n  }\n\n  if ('ownerDocument' in target) {\n    var node = target;\n\n    if (!node.ownerDocument.defaultView) {\n      return node instanceof Node;\n    }\n\n    if (node instanceof node.ownerDocument.defaultView.Node) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nmodule.exports = isInstanceOfNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Drag behavior has begun from outside the editor element.\n */\nfunction editOnDragOver(editor, e) {\n  editor.setMode('drag');\n  e.preventDefault();\n}\n\nmodule.exports = editOnDragOver;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * A `dragstart` event has begun within the text editor component.\n */\nfunction editOnDragStart(editor) {\n  editor._internalDrag = true;\n  editor.setMode('drag');\n}\n\nmodule.exports = editOnDragStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nfunction editOnFocus(editor, e) {\n  var editorState = editor._latestEditorState;\n  var currentSelection = editorState.getSelection();\n\n  if (currentSelection.getHasFocus()) {\n    return;\n  }\n\n  var selection = currentSelection.set('hasFocus', true);\n  editor.props.onFocus && editor.props.onFocus(e); // When the tab containing this text editor is hidden and the user does a\n  // find-in-page in a _different_ tab, Chrome on Mac likes to forget what the\n  // selection was right after sending this focus event and (if you let it)\n  // moves the cursor back to the beginning of the editor, so we force the\n  // selection here instead of simply accepting it in order to preserve the\n  // old cursor position. See https://crbug.com/540004.\n  // But it looks like this is fixed in Chrome 60.0.3081.0.\n  // Other browsers also don't have this bug, so we prefer to acceptSelection\n  // when possible, to ensure that unfocusing and refocusing a Draft editor\n  // doesn't preserve the selection, matching how textareas work.\n\n  if (UserAgent.isBrowser('Chrome < 60.0.3081.0')) {\n    editor.update(EditorState.forceSelection(editorState, selection));\n  } else {\n    editor.update(EditorState.acceptSelection(editorState, selection));\n  }\n}\n\nmodule.exports = editOnFocus;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar _require = require(\"./draftKeyUtils\"),\n    notEmptyKey = _require.notEmptyKey;\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isGecko = UserAgent.isEngine('Gecko');\nvar DOUBLE_NEWLINE = '\\n\\n';\n\nfunction onInputType(inputType, editorState) {\n  switch (inputType) {\n    case 'deleteContentBackward':\n      return keyCommandPlainBackspace(editorState);\n  }\n\n  return editorState;\n}\n/**\n * This function serves two purposes\n *\n * 1. To update the editorState and call onChange method with the new\n * editorState. This editorState is calculated in editOnBeforeInput but the\n * onChange method is not called with the new state until this method does it.\n * It is done to handle a specific case where certain character inputs might\n * be replaced with something else. E.g. snippets ('rc' might be replaced\n * with boilerplate code for react component). More information on the\n * exact problem can be found here -\n * https://github.com/facebook/draft-js/commit/07892ba479bd4dfc6afd1e0ed179aaf51cd138b1\n *\n * 2. intended to handle spellcheck and autocorrect changes,\n * which occur in the DOM natively without any opportunity to observe or\n * interpret the changes before they occur.\n *\n * The `input` event fires in contentEditable elements reliably for non-IE\n * browsers, immediately after changes occur to the editor DOM. Since our other\n * handlers override or otherwise handle cover other varieties of text input,\n * the DOM state should match the model in all controlled input cases. Thus,\n * when an `input` change leads to a DOM/model mismatch, the change should be\n * due to a spellcheck change, and we can incorporate it into our model.\n */\n\n\nfunction editOnInput(editor, e) {\n  if (editor._pendingStateFromBeforeInput !== undefined) {\n    editor.update(editor._pendingStateFromBeforeInput);\n    editor._pendingStateFromBeforeInput = undefined;\n  } // at this point editor is not null for sure (after input)\n\n\n  var castedEditorElement = editor.editor;\n  var domSelection = castedEditorElement.ownerDocument.defaultView.getSelection();\n  var anchorNode = domSelection.anchorNode,\n      isCollapsed = domSelection.isCollapsed;\n  var isNotTextOrElementNode = (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.TEXT_NODE && (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.ELEMENT_NODE;\n\n  if (anchorNode == null || isNotTextOrElementNode) {\n    // TODO: (t16149272) figure out context for this change\n    return;\n  }\n\n  if (anchorNode.nodeType === Node.TEXT_NODE && (anchorNode.previousSibling !== null || anchorNode.nextSibling !== null)) {\n    // When typing at the beginning of a visual line, Chrome splits the text\n    // nodes into two. Why? No one knows. This commit is suspicious:\n    // https://chromium.googlesource.com/chromium/src/+/a3b600981286b135632371477f902214c55a1724\n    // To work around, we'll merge the sibling text nodes back into this one.\n    var span = anchorNode.parentNode;\n\n    if (span == null) {\n      // Handle null-parent case.\n      return;\n    }\n\n    anchorNode.nodeValue = span.textContent;\n\n    for (var child = span.firstChild; child != null; child = child.nextSibling) {\n      if (child !== anchorNode) {\n        span.removeChild(child);\n      }\n    }\n  }\n\n  var domText = anchorNode.textContent;\n  var editorState = editor._latestEditorState;\n  var offsetKey = nullthrows(findAncestorOffsetKey(anchorNode));\n\n  var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n      blockKey = _DraftOffsetKey$decod.blockKey,\n      decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n      leafKey = _DraftOffsetKey$decod.leafKey;\n\n  var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n      start = _editorState$getBlock.start,\n      end = _editorState$getBlock.end;\n\n  var content = editorState.getCurrentContent();\n  var block = content.getBlockForKey(blockKey);\n  var modelText = block.getText().slice(start, end); // Special-case soft newlines here. If the DOM text ends in a soft newline,\n  // we will have manually inserted an extra soft newline in DraftEditorLeaf.\n  // We want to remove this extra newline for the purpose of our comparison\n  // of DOM and model text.\n\n  if (domText.endsWith(DOUBLE_NEWLINE)) {\n    domText = domText.slice(0, -1);\n  } // No change -- the DOM is up to date. Nothing to do here.\n\n\n  if (domText === modelText) {\n    // This can be buggy for some Android keyboards because they don't fire\n    // standard onkeydown/pressed events and only fired editOnInput\n    // so domText is already changed by the browser and ends up being equal\n    // to modelText unexpectedly.\n    // Newest versions of Android support the dom-inputevent-inputtype\n    // and we can use the `inputType` to properly apply the state changes.\n\n    /* $FlowFixMe[prop-missing] inputType is only defined on a draft of a\n     * standard. https://w3c.github.io/input-events/#dom-inputevent-inputtype\n     */\n    var inputType = e.nativeEvent.inputType;\n\n    if (inputType) {\n      var newEditorState = onInputType(inputType, editorState);\n\n      if (newEditorState !== editorState) {\n        editor.restoreEditorDOM();\n        editor.update(newEditorState);\n        return;\n      }\n    }\n\n    return;\n  }\n\n  var selection = editorState.getSelection(); // We'll replace the entire leaf with the text content of the target.\n\n  var targetRange = selection.merge({\n    anchorOffset: start,\n    focusOffset: end,\n    isBackward: false\n  });\n  var entityKey = block.getEntityAt(start);\n  var entity = notEmptyKey(entityKey) ? content.getEntity(entityKey) : null;\n  var entityType = entity != null ? entity.getMutability() : null;\n  var preserveEntity = entityType === 'MUTABLE'; // Immutable or segmented entities cannot properly be handled by the\n  // default browser undo, so we have to use a different change type to\n  // force using our internal undo method instead of falling through to the\n  // native browser undo.\n\n  var changeType = preserveEntity ? 'spellcheck-change' : 'apply-entity';\n  var newContent = DraftModifier.replaceText(content, targetRange, domText, block.getInlineStyleAt(start), preserveEntity ? block.getEntityAt(start) : null);\n  var anchorOffset, focusOffset, startOffset, endOffset;\n\n  if (isGecko) {\n    // Firefox selection does not change while the context menu is open, so\n    // we preserve the anchor and focus values of the DOM selection.\n    anchorOffset = domSelection.anchorOffset;\n    focusOffset = domSelection.focusOffset;\n    startOffset = start + Math.min(anchorOffset, focusOffset);\n    endOffset = startOffset + Math.abs(anchorOffset - focusOffset);\n    anchorOffset = startOffset;\n    focusOffset = endOffset;\n  } else {\n    // Browsers other than Firefox may adjust DOM selection while the context\n    // menu is open, and Safari autocorrect is prone to providing an inaccurate\n    // DOM selection. Don't trust it. Instead, use our existing SelectionState\n    // and adjust it based on the number of characters changed during the\n    // mutation.\n    var charDelta = domText.length - modelText.length;\n    startOffset = selection.getStartOffset();\n    endOffset = selection.getEndOffset();\n    anchorOffset = isCollapsed ? endOffset + charDelta : startOffset;\n    focusOffset = endOffset + charDelta;\n  } // Segmented entities are completely or partially removed when their\n  // text content changes. For this case we do not want any text to be selected\n  // after the change, so we are not merging the selection.\n\n\n  var contentWithAdjustedDOMSelection = newContent.merge({\n    selectionBefore: content.getSelectionAfter(),\n    selectionAfter: selection.merge({\n      anchorOffset: anchorOffset,\n      focusOffset: focusOffset\n    })\n  });\n  editor.update(EditorState.push(editorState, contentWithAdjustedDOMSelection, changeType));\n}\n\nmodule.exports = editOnInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar SecondaryClipboard = require(\"./SecondaryClipboard\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar keyCommandBackspaceToStartOfLine = require(\"./keyCommandBackspaceToStartOfLine\");\n\nvar keyCommandBackspaceWord = require(\"./keyCommandBackspaceWord\");\n\nvar keyCommandDeleteWord = require(\"./keyCommandDeleteWord\");\n\nvar keyCommandInsertNewline = require(\"./keyCommandInsertNewline\");\n\nvar keyCommandMoveSelectionToEndOfBlock = require(\"./keyCommandMoveSelectionToEndOfBlock\");\n\nvar keyCommandMoveSelectionToStartOfBlock = require(\"./keyCommandMoveSelectionToStartOfBlock\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar keyCommandPlainDelete = require(\"./keyCommandPlainDelete\");\n\nvar keyCommandTransposeCharacters = require(\"./keyCommandTransposeCharacters\");\n\nvar keyCommandUndo = require(\"./keyCommandUndo\");\n\nvar isOptionKeyCommand = KeyBindingUtil.isOptionKeyCommand;\nvar isChrome = UserAgent.isBrowser('Chrome');\n/**\n * Map a `DraftEditorCommand` command value to a corresponding function.\n */\n\nfunction onKeyCommand(command, editorState, e) {\n  switch (command) {\n    case 'redo':\n      return EditorState.redo(editorState);\n\n    case 'delete':\n      return keyCommandPlainDelete(editorState);\n\n    case 'delete-word':\n      return keyCommandDeleteWord(editorState);\n\n    case 'backspace':\n      return keyCommandPlainBackspace(editorState);\n\n    case 'backspace-word':\n      return keyCommandBackspaceWord(editorState);\n\n    case 'backspace-to-start-of-line':\n      return keyCommandBackspaceToStartOfLine(editorState, e);\n\n    case 'split-block':\n      return keyCommandInsertNewline(editorState);\n\n    case 'transpose-characters':\n      return keyCommandTransposeCharacters(editorState);\n\n    case 'move-selection-to-start-of-block':\n      return keyCommandMoveSelectionToStartOfBlock(editorState);\n\n    case 'move-selection-to-end-of-block':\n      return keyCommandMoveSelectionToEndOfBlock(editorState);\n\n    case 'secondary-cut':\n      return SecondaryClipboard.cut(editorState);\n\n    case 'secondary-paste':\n      return SecondaryClipboard.paste(editorState);\n\n    default:\n      return editorState;\n  }\n}\n/**\n * Intercept keydown behavior to handle keys and commands manually, if desired.\n *\n * Keydown combinations may be mapped to `DraftCommand` values, which may\n * correspond to command functions that modify the editor or its contents.\n *\n * See `getDefaultKeyBinding` for defaults. Alternatively, the top-level\n * component may provide a custom mapping via the `keyBindingFn` prop.\n */\n\n\nfunction editOnKeyDown(editor, e) {\n  var keyCode = e.which;\n  var editorState = editor._latestEditorState;\n\n  function callDeprecatedHandler(handlerName) {\n    var deprecatedHandler = editor.props[handlerName];\n\n    if (deprecatedHandler) {\n      deprecatedHandler(e);\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  switch (keyCode) {\n    case Keys.RETURN:\n      e.preventDefault(); // The top-level component may manually handle newline insertion. If\n      // no special handling is performed, fall through to command handling.\n\n      if (editor.props.handleReturn && isEventHandled(editor.props.handleReturn(e, editorState))) {\n        return;\n      }\n\n      break;\n\n    case Keys.ESC:\n      e.preventDefault();\n\n      if (callDeprecatedHandler('onEscape')) {\n        return;\n      }\n\n      break;\n\n    case Keys.TAB:\n      if (callDeprecatedHandler('onTab')) {\n        return;\n      }\n\n      break;\n\n    case Keys.UP:\n      if (callDeprecatedHandler('onUpArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.RIGHT:\n      if (callDeprecatedHandler('onRightArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.DOWN:\n      if (callDeprecatedHandler('onDownArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.LEFT:\n      if (callDeprecatedHandler('onLeftArrow')) {\n        return;\n      }\n\n      break;\n\n    case Keys.SPACE:\n      // Prevent Chrome on OSX behavior where option + space scrolls.\n      if (isChrome && isOptionKeyCommand(e)) {\n        e.preventDefault();\n      }\n\n  }\n\n  var command = editor.props.keyBindingFn(e); // If no command is specified, allow keydown event to continue.\n\n  if (command == null || command === '') {\n    if (keyCode === Keys.SPACE && isChrome && isOptionKeyCommand(e)) {\n      // The default keydown event has already been prevented in order to stop\n      // Chrome from scrolling. Insert a nbsp into the editor as OSX would for\n      // other browsers.\n      var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), \"\\xA0\");\n      editor.update(EditorState.push(editorState, contentState, 'insert-characters'));\n    }\n\n    return;\n  }\n\n  if (command === 'undo') {\n    // Since undo requires some special updating behavior to keep the editor\n    // in sync, handle it separately.\n    keyCommandUndo(e, editorState, editor.update);\n    return;\n  } // At this point, we know that we're handling a command of some kind, so\n  // we don't want to insert a character following the keydown.\n\n\n  e.preventDefault(); // Allow components higher up the tree to handle the command first.\n\n  if (editor.props.handleKeyCommand && isEventHandled(editor.props.handleKeyCommand(command, editorState, e.timeStamp))) {\n    return;\n  }\n\n  var newState = onKeyCommand(command, editorState, e);\n\n  if (newState !== editorState) {\n    editor.update(newState);\n  }\n}\n\nmodule.exports = editOnKeyDown;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nfunction isSoftNewlineEvent(e) {\n  return e.which === Keys.RETURN && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'));\n}\n\nmodule.exports = isSoftNewlineEvent;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar clipboard = null;\n/**\n * Some systems offer a \"secondary\" clipboard to allow quick internal cut\n * and paste behavior. For instance, Ctrl+K (cut) and Ctrl+Y (paste).\n */\n\nvar SecondaryClipboard = {\n  cut: function cut(editorState) {\n    var content = editorState.getCurrentContent();\n    var selection = editorState.getSelection();\n    var targetRange = null;\n\n    if (selection.isCollapsed()) {\n      var anchorKey = selection.getAnchorKey();\n      var blockEnd = content.getBlockForKey(anchorKey).getLength();\n\n      if (blockEnd === selection.getAnchorOffset()) {\n        var keyAfter = content.getKeyAfter(anchorKey);\n\n        if (keyAfter == null) {\n          return editorState;\n        }\n\n        targetRange = selection.set('focusKey', keyAfter).set('focusOffset', 0);\n      } else {\n        targetRange = selection.set('focusOffset', blockEnd);\n      }\n    } else {\n      targetRange = selection;\n    }\n\n    targetRange = nullthrows(targetRange); // TODO: This should actually append to the current state when doing\n    // successive ^K commands without any other cursor movement\n\n    clipboard = getContentStateFragment(content, targetRange);\n    var afterRemoval = DraftModifier.removeRange(content, targetRange, 'forward');\n\n    if (afterRemoval === content) {\n      return editorState;\n    }\n\n    return EditorState.push(editorState, afterRemoval, 'remove-range');\n  },\n  paste: function paste(editorState) {\n    if (!clipboard) {\n      return editorState;\n    }\n\n    var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), clipboard);\n    return EditorState.push(editorState, newContent, 'insert-fragment');\n  }\n};\nmodule.exports = SecondaryClipboard;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar expandRangeToStartOfLine = require(\"./expandRangeToStartOfLine\");\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n\nfunction keyCommandBackspaceToStartOfLine(editorState, e) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n\n    if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {\n      return moveSelectionBackward(strategyState, 1);\n    }\n\n    var ownerDocument = e.currentTarget.ownerDocument;\n    var domSelection = ownerDocument.defaultView.getSelection(); // getRangeAt can technically throw if there's no selection, but we know\n    // there is one here because text editor has focus (the cursor is a\n    // selection of length 0). Therefore, we don't need to wrap this in a\n    // try-catch block.\n\n    var range = domSelection.getRangeAt(0);\n    range = expandRangeToStartOfLine(range);\n    return getDraftEditorSelectionWithNodes(strategyState, null, range.endContainer, range.endOffset, range.startContainer, range.startOffset).selectionState;\n  }, 'backward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceToStartOfLine;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Return the computed line height, in pixels, for the provided element.\n */\n\n\nfunction getLineHeightPx(element) {\n  var computed = getComputedStyle(element);\n  var correctDocument = getCorrectDocumentFromNode(element);\n  var div = correctDocument.createElement('div');\n  div.style.fontFamily = computed.fontFamily;\n  div.style.fontSize = computed.fontSize;\n  div.style.fontStyle = computed.fontStyle;\n  div.style.fontWeight = computed.fontWeight;\n  div.style.lineHeight = computed.lineHeight;\n  div.style.position = 'absolute';\n  div.textContent = 'M';\n  var documentBody = correctDocument.body;\n  !documentBody ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing document.body') : invariant(false) : void 0; // forced layout here\n\n  documentBody.appendChild(div);\n  var rect = div.getBoundingClientRect();\n  documentBody.removeChild(div);\n  return rect.height;\n}\n/**\n * Return whether every ClientRect in the provided list lies on the same line.\n *\n * We assume that the rects on the same line all contain the baseline, so the\n * lowest top line needs to be above the highest bottom line (i.e., if you were\n * to project the rects onto the y-axis, their intersection would be nonempty).\n *\n * In addition, we require that no two boxes are lineHeight (or more) apart at\n * either top or bottom, which helps protect against false positives for fonts\n * with extremely large glyph heights (e.g., with a font size of 17px, Zapfino\n * produces rects of height 58px!).\n */\n\n\nfunction areRectsOnOneLine(rects, lineHeight) {\n  var minTop = Infinity;\n  var minBottom = Infinity;\n  var maxTop = -Infinity;\n  var maxBottom = -Infinity;\n\n  for (var ii = 0; ii < rects.length; ii++) {\n    var rect = rects[ii];\n\n    if (rect.width === 0 || rect.width === 1) {\n      // When a range starts or ends a soft wrap, many browsers (Chrome, IE,\n      // Safari) include an empty rect on the previous or next line. When the\n      // text lies in a container whose position is not integral (e.g., from\n      // margin: auto), Safari makes these empty rects have width 1 (instead of\n      // 0). Having one-pixel-wide characters seems unlikely (and most browsers\n      // report widths in subpixel precision anyway) so it's relatively safe to\n      // skip over them.\n      continue;\n    }\n\n    minTop = Math.min(minTop, rect.top);\n    minBottom = Math.min(minBottom, rect.bottom);\n    maxTop = Math.max(maxTop, rect.top);\n    maxBottom = Math.max(maxBottom, rect.bottom);\n  }\n\n  return maxTop <= minBottom && maxTop - minTop < lineHeight && maxBottom - minBottom < lineHeight;\n}\n/**\n * Return the length of a node, as used by Range offsets.\n */\n\n\nfunction getNodeLength(node) {\n  // http://www.w3.org/TR/dom/#concept-node-length\n  switch (node.nodeType) {\n    case Node.DOCUMENT_TYPE_NODE:\n      return 0;\n\n    case Node.TEXT_NODE:\n    case Node.PROCESSING_INSTRUCTION_NODE:\n    case Node.COMMENT_NODE:\n      return node.length;\n\n    default:\n      return node.childNodes.length;\n  }\n}\n/**\n * Given a collapsed range, move the start position backwards as far as\n * possible while the range still spans only a single line.\n */\n\n\nfunction expandRangeToStartOfLine(range) {\n  !range.collapsed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expandRangeToStartOfLine: Provided range is not collapsed.') : invariant(false) : void 0;\n  range = range.cloneRange();\n  var containingElement = range.startContainer;\n\n  if (containingElement.nodeType !== 1) {\n    containingElement = containingElement.parentNode;\n  }\n\n  var lineHeight = getLineHeightPx(containingElement); // Imagine our text looks like:\n  //   <div><span>once upon a time, there was a <em>boy\n  //   who lived</em> </span><q><strong>under^ the\n  //   stairs</strong> in a small closet.</q></div>\n  // where the caret represents the cursor. First, we crawl up the tree until\n  // the range spans multiple lines (setting the start point to before\n  // \"<strong>\", then before \"<div>\"), then at each level we do a search to\n  // find the latest point which is still on a previous line. We'll find that\n  // the break point is inside the span, then inside the <em>, then in its text\n  // node child, the actual break point before \"who\".\n\n  var bestContainer = range.endContainer;\n  var bestOffset = range.endOffset;\n  range.setStart(range.startContainer, 0);\n\n  while (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n    bestContainer = range.startContainer;\n    bestOffset = range.startOffset;\n    !bestContainer.parentNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found unexpected detached subtree when traversing.') : invariant(false) : void 0;\n    range.setStartBefore(bestContainer);\n\n    if (bestContainer.nodeType === 1 && getComputedStyle(bestContainer).display !== 'inline') {\n      // The start of the line is never in a different block-level container.\n      break;\n    }\n  } // In the above example, range now spans from \"<div>\" to \"under\",\n  // bestContainer is <div>, and bestOffset is 1 (index of <q> inside <div>)].\n  // Picking out which child to recurse into here is a special case since we\n  // don't want to check past <q> -- once we find that the final range starts\n  // in <span>, we can look at all of its children (and all of their children)\n  // to find the break point.\n  // At all times, (bestContainer, bestOffset) is the latest single-line start\n  // point that we know of.\n\n\n  var currentContainer = bestContainer;\n  var maxIndexToConsider = bestOffset - 1;\n\n  do {\n    var nodeValue = currentContainer.nodeValue;\n    var ii = maxIndexToConsider;\n\n    for (; ii >= 0; ii--) {\n      if (nodeValue != null && ii > 0 && UnicodeUtils.isSurrogatePair(nodeValue, ii - 1)) {\n        // We're in the middle of a surrogate pair -- skip over so we never\n        // return a range with an endpoint in the middle of a code point.\n        continue;\n      }\n\n      range.setStart(currentContainer, ii);\n\n      if (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n        bestContainer = currentContainer;\n        bestOffset = ii;\n      } else {\n        break;\n      }\n    }\n\n    if (ii === -1 || currentContainer.childNodes.length === 0) {\n      // If ii === -1, then (bestContainer, bestOffset), which is equal to\n      // (currentContainer, 0), was a single-line start point but a start\n      // point before currentContainer wasn't, so the line break seems to\n      // have occurred immediately after currentContainer's start tag\n      //\n      // If currentContainer.childNodes.length === 0, we're already at a\n      // terminal node (e.g., text node) and should return our current best.\n      break;\n    }\n\n    currentContainer = currentContainer.childNodes[ii];\n    maxIndexToConsider = getNodeLength(currentContainer);\n  } while (true);\n\n  range.setStart(bestContainer, bestOffset);\n  return range;\n}\n\nmodule.exports = expandRangeToStartOfLine;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is left of the cursor, as well as any spaces or\n * punctuation after the word.\n */\n\n\nfunction keyCommandBackspaceWord(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var offset = selection.getStartOffset(); // If there are no words before the cursor, remove the preceding newline.\n\n    if (offset === 0) {\n      return moveSelectionBackward(strategyState, 1);\n    }\n\n    var key = selection.getStartKey();\n    var content = strategyState.getCurrentContent();\n    var text = content.getBlockForKey(key).getText().slice(0, offset);\n    var toRemove = DraftRemovableWord.getBackward(text);\n    return moveSelectionBackward(strategyState, toRemove.length || 1);\n  }, 'backward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceWord;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * @stub\n * \n */\n'use strict'; // \\u00a1-\\u00b1\\u00b4-\\u00b8\\u00ba\\u00bb\\u00bf\n//             is latin supplement punctuation except fractions and superscript\n//             numbers\n// \\u2010-\\u2027\\u2030-\\u205e\n//             is punctuation from the general punctuation block:\n//             weird quotes, commas, bullets, dashes, etc.\n// \\u30fb\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301f\n//             is CJK punctuation\n// \\uff1a-\\uff1f\\uff01-\\uff0f\\uff3b-\\uff40\\uff5b-\\uff65\n//             is some full-width/half-width punctuation\n// \\u2E2E\\u061f\\u066a-\\u066c\\u061b\\u060c\\u060d\\uFD3e\\uFD3F\n//             is some Arabic punctuation marks\n// \\u1801\\u0964\\u104a\\u104b\n//             is misc. other language punctuation marks\n\nvar PUNCTUATION = '[.,+*?$|#{}()\\'\\\\^\\\\-\\\\[\\\\]\\\\\\\\\\\\/!@%\"~=<>_:;' + \"\\u30FB\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301F\\uFF1A-\\uFF1F\\uFF01-\\uFF0F\" + \"\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\u2E2E\\u061F\\u066A-\\u066C\\u061B\\u060C\\u060D\" + \"\\uFD3E\\uFD3F\\u1801\\u0964\\u104A\\u104B\\u2010-\\u2027\\u2030-\\u205E\" + \"\\xA1-\\xB1\\xB4-\\xB8\\xBA\\xBB\\xBF]\";\nmodule.exports = {\n  getPunctuation: function getPunctuation() {\n    return PUNCTUATION;\n  }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is right of the cursor, as well as any spaces or\n * punctuation before the word.\n */\n\n\nfunction keyCommandDeleteWord(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var offset = selection.getStartOffset();\n    var key = selection.getStartKey();\n    var content = strategyState.getCurrentContent();\n    var text = content.getBlockForKey(key).getText().slice(offset);\n    var toRemove = DraftRemovableWord.getForward(text); // If there are no words in front of the cursor, remove the newline.\n\n    return moveSelectionForward(strategyState, toRemove.length || 1);\n  }, 'forward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandDeleteWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandInsertNewline(editorState) {\n  var contentState = DraftModifier.splitBlock(editorState.getCurrentContent(), editorState.getSelection());\n  return EditorState.push(editorState, contentState, 'split-block');\n}\n\nmodule.exports = keyCommandInsertNewline;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * See comment for `moveSelectionToStartOfBlock`.\n */\n\n\nfunction keyCommandMoveSelectionToEndOfBlock(editorState) {\n  var selection = editorState.getSelection();\n  var endKey = selection.getEndKey();\n  var content = editorState.getCurrentContent();\n  var textLength = content.getBlockForKey(endKey).getLength();\n  return EditorState.set(editorState, {\n    selection: selection.merge({\n      anchorKey: endKey,\n      anchorOffset: textLength,\n      focusKey: endKey,\n      focusOffset: textLength,\n      isBackward: false\n    }),\n    forceSelection: true\n  });\n}\n\nmodule.exports = keyCommandMoveSelectionToEndOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * Collapse selection at the start of the first selected block. This is used\n * for Firefox versions that attempt to navigate forward/backward instead of\n * moving the cursor. Other browsers are able to move the cursor natively.\n */\n\n\nfunction keyCommandMoveSelectionToStartOfBlock(editorState) {\n  var selection = editorState.getSelection();\n  var startKey = selection.getStartKey();\n  return EditorState.set(editorState, {\n    selection: selection.merge({\n      anchorKey: startKey,\n      anchorOffset: 0,\n      focusKey: startKey,\n      focusOffset: 0,\n      isBackward: false\n    }),\n    forceSelection: true\n  });\n}\n\nmodule.exports = keyCommandMoveSelectionToStartOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the following\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainDelete(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var content = strategyState.getCurrentContent();\n    var key = selection.getAnchorKey();\n    var offset = selection.getAnchorOffset();\n    var charAhead = content.getBlockForKey(key).getText()[offset];\n    return moveSelectionForward(strategyState, charAhead ? UnicodeUtils.getUTF16Length(charAhead, 0) : 1);\n  }, 'forward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  var selection = editorState.getSelection();\n  return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'delete-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainDelete;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n/**\n * Transpose the characters on either side of a collapsed cursor, or\n * if the cursor is at the end of the block, transpose the last two\n * characters.\n */\n\n\nfunction keyCommandTransposeCharacters(editorState) {\n  var selection = editorState.getSelection();\n\n  if (!selection.isCollapsed()) {\n    return editorState;\n  }\n\n  var offset = selection.getAnchorOffset();\n\n  if (offset === 0) {\n    return editorState;\n  }\n\n  var blockKey = selection.getAnchorKey();\n  var content = editorState.getCurrentContent();\n  var block = content.getBlockForKey(blockKey);\n  var length = block.getLength(); // Nothing to transpose if there aren't two characters.\n\n  if (length <= 1) {\n    return editorState;\n  }\n\n  var removalRange;\n  var finalSelection;\n\n  if (offset === length) {\n    // The cursor is at the end of the block. Swap the last two characters.\n    removalRange = selection.set('anchorOffset', offset - 1);\n    finalSelection = selection;\n  } else {\n    removalRange = selection.set('focusOffset', offset + 1);\n    finalSelection = removalRange.set('anchorOffset', offset + 1);\n  } // Extract the character to move as a fragment. This preserves its\n  // styling and entity, if any.\n\n\n  var movedFragment = getContentStateFragment(content, removalRange);\n  var afterRemoval = DraftModifier.removeRange(content, removalRange, 'backward'); // After the removal, the insertion target is one character back.\n\n  var selectionAfter = afterRemoval.getSelectionAfter();\n  var targetOffset = selectionAfter.getAnchorOffset() - 1;\n  var targetRange = selectionAfter.merge({\n    anchorOffset: targetOffset,\n    focusOffset: targetOffset\n  });\n  var afterInsert = DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n  var newEditorState = EditorState.push(editorState, afterInsert, 'insert-fragment');\n  return EditorState.acceptSelection(newEditorState, finalSelection);\n}\n\nmodule.exports = keyCommandTransposeCharacters;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandUndo(e, editorState, updateFn) {\n  var undoneState = EditorState.undo(editorState); // If the last change to occur was a spellcheck change, allow the undo\n  // event to fall through to the browser. This allows the browser to record\n  // the unwanted change, which should soon lead it to learn not to suggest\n  // the correction again.\n\n  if (editorState.getLastChangeType() === 'spellcheck-change') {\n    var nativelyRenderedContent = undoneState.getCurrentContent();\n    updateFn(EditorState.set(undoneState, {\n      nativelyRenderedContent: nativelyRenderedContent\n    }));\n    return;\n  } // Otheriwse, manage the undo behavior manually.\n\n\n  e.preventDefault();\n\n  if (!editorState.getNativelyRenderedContent()) {\n    updateFn(undoneState);\n    return;\n  } // Trigger a re-render with the current content state to ensure that the\n  // component tree has up-to-date props for comparison.\n\n\n  updateFn(EditorState.set(editorState, {\n    nativelyRenderedContent: null\n  })); // Wait to ensure that the re-render has occurred before performing\n  // the undo action.\n\n  setTimeout(function () {\n    updateFn(undoneState);\n  }, 0);\n}\n\nmodule.exports = keyCommandUndo;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftPasteProcessor = require(\"./DraftPasteProcessor\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar splitTextIntoTextBlocks = require(\"./splitTextIntoTextBlocks\");\n/**\n * Paste content.\n */\n\n\nfunction editOnPaste(editor, e) {\n  e.preventDefault();\n  var data = new DataTransfer(e.clipboardData); // Get files, unless this is likely to be a string the user wants inline.\n\n  if (!data.isRichText()) {\n    var files = data.getFiles();\n    var defaultFileText = data.getText();\n\n    if (files.length > 0) {\n      // Allow customized paste handling for images, etc. Otherwise, fall\n      // through to insert text contents into the editor.\n      if (editor.props.handlePastedFiles && isEventHandled(editor.props.handlePastedFiles(files))) {\n        return;\n      }\n      /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n       * DataTransfer was typed. getFiles() returns an array of <Files extends\n       * Blob>, not Blob */\n\n\n      getTextContentFromFiles(files, function (\n      /*string*/\n      fileText) {\n        fileText = fileText || defaultFileText;\n\n        if (!fileText) {\n          return;\n        }\n\n        var editorState = editor._latestEditorState;\n        var blocks = splitTextIntoTextBlocks(fileText);\n        var character = CharacterMetadata.create({\n          style: editorState.getCurrentInlineStyle(),\n          entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n        });\n        var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n        var text = DraftPasteProcessor.processText(blocks, character, currentBlockType);\n        var fragment = BlockMapBuilder.createFromArray(text);\n        var withInsertedText = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment);\n        editor.update(EditorState.push(editorState, withInsertedText, 'insert-fragment'));\n      });\n      return;\n    }\n  }\n\n  var textBlocks = [];\n  var text = data.getText();\n  var html = data.getHTML();\n  var editorState = editor._latestEditorState;\n\n  if (editor.props.formatPastedText) {\n    var _editor$props$formatP = editor.props.formatPastedText(text, html),\n        formattedText = _editor$props$formatP.text,\n        formattedHtml = _editor$props$formatP.html;\n\n    text = formattedText;\n    html = formattedHtml;\n  }\n\n  if (editor.props.handlePastedText && isEventHandled(editor.props.handlePastedText(text, html, editorState))) {\n    return;\n  }\n\n  if (text) {\n    textBlocks = splitTextIntoTextBlocks(text);\n  }\n\n  if (!editor.props.stripPastedStyles) {\n    // If the text from the paste event is rich content that matches what we\n    // already have on the internal clipboard, assume that we should just use\n    // the clipboard fragment for the paste. This will allow us to preserve\n    // styling and entities, if any are present. Note that newlines are\n    // stripped during comparison -- this is because copy/paste within the\n    // editor in Firefox and IE will not include empty lines. The resulting\n    // paste will preserve the newlines correctly.\n    var internalClipboard = editor.getClipboard();\n\n    if (!editor.props.formatPastedText && data.isRichText() && internalClipboard) {\n      var _html;\n\n      if ( // If the editorKey is present in the pasted HTML, it should be safe to\n      // assume this is an internal paste.\n      ((_html = html) === null || _html === void 0 ? void 0 : _html.indexOf(editor.getEditorKey())) !== -1 || // The copy may have been made within a single block, in which case the\n      // editor key won't be part of the paste. In this case, just check\n      // whether the pasted text matches the internal clipboard.\n      textBlocks.length === 1 && internalClipboard.size === 1 && internalClipboard.first().getText() === text) {\n        editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n        return;\n      }\n    } else if (internalClipboard && data.types.includes('com.apple.webarchive') && !data.types.includes('text/html') && areTextBlocksAndClipboardEqual(textBlocks, internalClipboard)) {\n      // Safari does not properly store text/html in some cases.\n      // Use the internalClipboard if present and equal to what is on\n      // the clipboard. See https://bugs.webkit.org/show_bug.cgi?id=19893.\n      editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n      return;\n    } // If there is html paste data, try to parse that.\n\n\n    if (html) {\n      var htmlFragment = DraftPasteProcessor.processHTML(html, editor.props.blockRenderMap);\n\n      if (htmlFragment) {\n        var contentBlocks = htmlFragment.contentBlocks,\n            entityMap = htmlFragment.entityMap;\n\n        if (contentBlocks) {\n          var htmlMap = BlockMapBuilder.createFromArray(contentBlocks);\n          editor.update(insertFragment(editor._latestEditorState, htmlMap, entityMap));\n          return;\n        }\n      }\n    } // Otherwise, create a new fragment from our pasted text. Also\n    // empty the internal clipboard, since it's no longer valid.\n\n\n    editor.setClipboard(null);\n  }\n\n  if (textBlocks.length) {\n    var character = CharacterMetadata.create({\n      style: editorState.getCurrentInlineStyle(),\n      entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n    });\n    var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n    var textFragment = DraftPasteProcessor.processText(textBlocks, character, currentBlockType);\n    var textMap = BlockMapBuilder.createFromArray(textFragment);\n    editor.update(insertFragment(editor._latestEditorState, textMap));\n  }\n}\n\nfunction insertFragment(editorState, fragment, entityMap) {\n  var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment); // TODO: merge the entity map once we stop using DraftEntity\n  // like this:\n  // const mergedEntityMap = newContent.getEntityMap().merge(entityMap);\n\n  return EditorState.push(editorState, newContent.set('entityMap', entityMap), 'insert-fragment');\n}\n\nfunction areTextBlocksAndClipboardEqual(textBlocks, blockMap) {\n  return textBlocks.length === blockMap.size && blockMap.valueSeq().every(function (block, ii) {\n    return block.getText() === textBlocks[ii];\n  });\n}\n\nmodule.exports = editOnPaste;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar convertFromHTMLToContentBlocks = require(\"./convertFromHTMLToContentBlocks\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n    Repeat = Immutable.Repeat;\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar DraftPasteProcessor = {\n  processHTML: function processHTML(html, blockRenderMap) {\n    return convertFromHTMLToContentBlocks(html, getSafeBodyFromHTML, blockRenderMap);\n  },\n  processText: function processText(textBlocks, character, type) {\n    return textBlocks.reduce(function (acc, textLine, index) {\n      textLine = sanitizeDraftText(textLine);\n      var key = generateRandomKey();\n      var blockNodeConfig = {\n        key: key,\n        type: type,\n        text: textLine,\n        characterList: List(Repeat(character, textLine.length))\n      }; // next block updates previous block\n\n      if (experimentalTreeDataSupport && index !== 0) {\n        var prevSiblingIndex = index - 1; // update previous block\n\n        var previousBlock = acc[prevSiblingIndex] = acc[prevSiblingIndex].merge({\n          nextSibling: key\n        });\n        blockNodeConfig = _objectSpread({}, blockNodeConfig, {\n          prevSibling: previousBlock.getKey()\n        });\n      }\n\n      acc.push(new ContentBlockRecord(blockNodeConfig));\n      return acc;\n    }, []);\n  }\n};\nmodule.exports = DraftPasteProcessor;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar URI =\n/*#__PURE__*/\nfunction () {\n  function URI(uri) {\n    _defineProperty(this, \"_uri\", void 0);\n\n    this._uri = uri;\n  }\n\n  var _proto = URI.prototype;\n\n  _proto.toString = function toString() {\n    return this._uri;\n  };\n\n  return URI;\n}();\n\nmodule.exports = URI;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLAnchorElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return isElement(node) && node.nodeName === 'A';\n}\n\nmodule.exports = isHTMLAnchorElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLImageElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return isElement(node) && node.nodeName === 'IMG';\n}\n\nmodule.exports = isHTMLImageElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction adjustBlockDepthForContentState(contentState, selectionState, adjustment, maxDepth) {\n  var startKey = selectionState.getStartKey();\n  var endKey = selectionState.getEndKey();\n  var blockMap = contentState.getBlockMap();\n  var blocks = blockMap.toSeq().skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).concat([[endKey, blockMap.get(endKey)]]).map(function (block) {\n    var depth = block.getDepth() + adjustment;\n    depth = Math.max(0, Math.min(depth, maxDepth));\n    return block.set('depth', depth);\n  });\n  blockMap = blockMap.merge(blocks);\n  return contentState.merge({\n    blockMap: blockMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = adjustBlockDepthForContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar NEWLINE_REGEX = /\\r\\n?|\\n/g;\n\nfunction splitTextIntoTextBlocks(text) {\n  return text.split(NEWLINE_REGEX);\n}\n\nmodule.exports = splitTextIntoTextBlocks;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar ReactDOMComet = require(\"react-dom\");\n\nvar flushControlled = ReactDOMComet.unstable_flushControlled;\nmodule.exports = flushControlled;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\n/**\n * This component is responsible for rendering placeholder text for the\n * `DraftEditor` component.\n *\n * Override placeholder style via CSS.\n */\nvar DraftEditorPlaceholder = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorPlaceholder, _React$Component);\n\n  function DraftEditorPlaceholder() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEditorPlaceholder.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return this.props.text !== nextProps.text || this.props.editorState.getSelection().getHasFocus() !== nextProps.editorState.getSelection().getHasFocus();\n  };\n\n  _proto.render = function render() {\n    var hasFocus = this.props.editorState.getSelection().getHasFocus();\n    var className = cx({\n      'public/DraftEditorPlaceholder/root': true,\n      'public/DraftEditorPlaceholder/hasFocus': hasFocus\n    });\n    var contentStyle = {\n      whiteSpace: 'pre-wrap'\n    };\n    return React.createElement(\"div\", {\n      className: className\n    }, React.createElement(\"div\", {\n      className: cx('public/DraftEditorPlaceholder/inner'),\n      id: this.props.accessibilityID,\n      style: contentStyle\n    }, this.props.text));\n  };\n\n  return DraftEditorPlaceholder;\n}(React.Component);\n\nmodule.exports = DraftEditorPlaceholder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar encodeEntityRanges = require(\"./encodeEntityRanges\");\n\nvar encodeInlineStyleRanges = require(\"./encodeInlineStyleRanges\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar createRawBlock = function createRawBlock(block, entityStorageMap) {\n  return {\n    key: block.getKey(),\n    text: block.getText(),\n    type: block.getType(),\n    depth: block.getDepth(),\n    inlineStyleRanges: encodeInlineStyleRanges(block),\n    entityRanges: encodeEntityRanges(block, entityStorageMap),\n    data: block.getData().toObject()\n  };\n};\n\nvar insertRawBlock = function insertRawBlock(block, entityMap, rawBlocks, blockCacheRef) {\n  if (block instanceof ContentBlock) {\n    rawBlocks.push(createRawBlock(block, entityMap));\n    return;\n  }\n\n  !(block instanceof ContentBlockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'block is not a BlockNode') : invariant(false) : void 0;\n  var parentKey = block.getParentKey();\n\n  var rawBlock = blockCacheRef[block.getKey()] = _objectSpread({}, createRawBlock(block, entityMap), {\n    children: []\n  });\n\n  if (parentKey) {\n    blockCacheRef[parentKey].children.push(rawBlock);\n    return;\n  }\n\n  rawBlocks.push(rawBlock);\n};\n\nvar encodeRawBlocks = function encodeRawBlocks(contentState, rawState) {\n  var entityMap = rawState.entityMap;\n  var rawBlocks = [];\n  var blockCacheRef = {};\n  var entityCacheRef = {};\n  var entityStorageKey = 0;\n  contentState.getBlockMap().forEach(function (block) {\n    block.findEntityRanges(function (character) {\n      return character.getEntity() !== null;\n    }, function (start) {\n      var entityKey = block.getEntityAt(start); // Stringify to maintain order of otherwise numeric keys.\n\n      var stringifiedEntityKey = DraftStringKey.stringify(entityKey); // This makes this function resilient to two entities\n      // erroneously having the same key\n\n      if (entityCacheRef[stringifiedEntityKey]) {\n        return;\n      }\n\n      entityCacheRef[stringifiedEntityKey] = entityKey; // we need the `any` casting here since this is a temporary state\n      // where we will later on flip the entity map and populate it with\n      // real entity, at this stage we just need to map back the entity\n      // key used by the BlockNode\n\n      entityMap[stringifiedEntityKey] = \"\".concat(entityStorageKey);\n      entityStorageKey++;\n    });\n    insertRawBlock(block, entityMap, rawBlocks, blockCacheRef);\n  });\n  return {\n    blocks: rawBlocks,\n    entityMap: entityMap\n  };\n}; // Flip storage map so that our storage keys map to global\n// DraftEntity keys.\n\n\nvar encodeRawEntityMap = function encodeRawEntityMap(contentState, rawState) {\n  var blocks = rawState.blocks,\n      entityMap = rawState.entityMap;\n  var rawEntityMap = {};\n  Object.keys(entityMap).forEach(function (key, index) {\n    var entity = contentState.getEntity(DraftStringKey.unstringify(key));\n    rawEntityMap[index] = {\n      type: entity.getType(),\n      mutability: entity.getMutability(),\n      data: entity.getData()\n    };\n  });\n  return {\n    blocks: blocks,\n    entityMap: rawEntityMap\n  };\n};\n\nvar convertFromDraftStateToRaw = function convertFromDraftStateToRaw(contentState) {\n  var rawDraftContentState = {\n    entityMap: {},\n    blocks: []\n  }; // add blocks\n\n  rawDraftContentState = encodeRawBlocks(contentState, rawDraftContentState); // add entities\n\n  rawDraftContentState = encodeRawEntityMap(contentState, rawDraftContentState);\n  return rawDraftContentState;\n};\n\nmodule.exports = convertFromDraftStateToRaw;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar strlen = UnicodeUtils.strlen;\n/**\n * Convert to UTF-8 character counts for storage.\n */\n\nfunction encodeEntityRanges(block, storageMap) {\n  var encoded = [];\n  block.findEntityRanges(function (character) {\n    return !!character.getEntity();\n  }, function (\n  /*number*/\n  start,\n  /*number*/\n  end) {\n    var text = block.getText();\n    var key = block.getEntityAt(start);\n    encoded.push({\n      offset: strlen(text.slice(0, start)),\n      length: strlen(text.slice(start, end)),\n      // Encode the key as a number for range storage.\n      key: Number(storageMap[DraftStringKey.stringify(key)])\n    });\n  });\n  return encoded;\n}\n\nmodule.exports = encodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar areEqual = function areEqual(a, b) {\n  return a === b;\n};\n\nvar isTruthy = function isTruthy(a) {\n  return !!a;\n};\n\nvar EMPTY_ARRAY = [];\n/**\n * Helper function for getting encoded styles for each inline style. Convert\n * to UTF-8 character counts for storage.\n */\n\nfunction getEncodedInlinesForType(block, styleList, styleToEncode) {\n  var ranges = []; // Obtain an array with ranges for only the specified style.\n\n  var filteredInlines = styleList.map(function (style) {\n    return style.has(styleToEncode);\n  }).toList();\n  findRangesImmutable(filteredInlines, areEqual, // We only want to keep ranges with nonzero style values.\n  isTruthy, function (start, end) {\n    var text = block.getText();\n    ranges.push({\n      offset: UnicodeUtils.strlen(text.slice(0, start)),\n      length: UnicodeUtils.strlen(text.slice(start, end)),\n      style: styleToEncode\n    });\n  });\n  return ranges;\n}\n/*\n * Retrieve the encoded arrays of inline styles, with each individual style\n * treated separately.\n */\n\n\nfunction encodeInlineStyleRanges(block) {\n  var styleList = block.getCharacterList().map(function (c) {\n    return c.getStyle();\n  }).toList();\n  var ranges = styleList.flatten().toSet().map(function (style) {\n    return getEncodedInlinesForType(block, styleList, style);\n  });\n  return Array.prototype.concat.apply(EMPTY_ARRAY, ranges.toJS());\n}\n\nmodule.exports = encodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftTreeAdapter = require(\"./DraftTreeAdapter\");\n\nvar DraftTreeInvariants = require(\"./DraftTreeInvariants\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar createCharacterList = require(\"./createCharacterList\");\n\nvar decodeEntityRanges = require(\"./decodeEntityRanges\");\n\nvar decodeInlineStyleRanges = require(\"./decodeInlineStyleRanges\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar List = Immutable.List,\n    Map = Immutable.Map,\n    OrderedMap = Immutable.OrderedMap;\n\nvar decodeBlockNodeConfig = function decodeBlockNodeConfig(block, entityMap) {\n  var key = block.key,\n      type = block.type,\n      data = block.data,\n      text = block.text,\n      depth = block.depth;\n  var blockNodeConfig = {\n    text: text,\n    depth: depth || 0,\n    type: type || 'unstyled',\n    key: key || generateRandomKey(),\n    data: Map(data),\n    characterList: decodeCharacterList(block, entityMap)\n  };\n  return blockNodeConfig;\n};\n\nvar decodeCharacterList = function decodeCharacterList(block, entityMap) {\n  var text = block.text,\n      rawEntityRanges = block.entityRanges,\n      rawInlineStyleRanges = block.inlineStyleRanges;\n  var entityRanges = rawEntityRanges || [];\n  var inlineStyleRanges = rawInlineStyleRanges || []; // Translate entity range keys to the DraftEntity map.\n\n  return createCharacterList(decodeInlineStyleRanges(text, inlineStyleRanges), decodeEntityRanges(text, entityRanges.filter(function (range) {\n    return entityMap.hasOwnProperty(range.key);\n  }).map(function (range) {\n    return _objectSpread({}, range, {\n      key: entityMap[range.key]\n    });\n  })));\n};\n\nvar addKeyIfMissing = function addKeyIfMissing(block) {\n  return _objectSpread({}, block, {\n    key: block.key || generateRandomKey()\n  });\n};\n/**\n * Node stack is responsible to ensure we traverse the tree only once\n * in depth order, while also providing parent refs to inner nodes to\n * construct their links.\n */\n\n\nvar updateNodeStack = function updateNodeStack(stack, nodes, parentRef) {\n  var nodesWithParentRef = nodes.map(function (block) {\n    return _objectSpread({}, block, {\n      parentRef: parentRef\n    });\n  }); // since we pop nodes from the stack we need to insert them in reverse\n\n  return stack.concat(nodesWithParentRef.reverse());\n};\n/**\n * This will build a tree draft content state by creating the node\n * reference links into a single tree walk. Each node has a link\n * reference to \"parent\", \"children\", \"nextSibling\" and \"prevSibling\"\n * blockMap will be created using depth ordering.\n */\n\n\nvar decodeContentBlockNodes = function decodeContentBlockNodes(blocks, entityMap) {\n  return blocks // ensure children have valid keys to enable sibling links\n  .map(addKeyIfMissing).reduce(function (blockMap, block, index) {\n    !Array.isArray(block.children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0; // ensure children have valid keys to enable sibling links\n\n    var children = block.children.map(addKeyIfMissing); // root level nodes\n\n    var contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(block, entityMap), {\n      prevSibling: index === 0 ? null : blocks[index - 1].key,\n      nextSibling: index === blocks.length - 1 ? null : blocks[index + 1].key,\n      children: List(children.map(function (child) {\n        return child.key;\n      }))\n    })); // push root node to blockMap\n\n    blockMap = blockMap.set(contentBlockNode.getKey(), contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n    var stack = updateNodeStack([], children, contentBlockNode); // start computing children nodes\n\n    while (stack.length > 0) {\n      // we pop from the stack and start processing this node\n      var node = stack.pop(); // parentRef already points to a converted ContentBlockNode\n\n      var parentRef = node.parentRef;\n      var siblings = parentRef.getChildKeys();\n\n      var _index = siblings.indexOf(node.key);\n\n      var isValidBlock = Array.isArray(node.children);\n\n      if (!isValidBlock) {\n        !isValidBlock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0;\n        break;\n      } // ensure children have valid keys to enable sibling links\n\n\n      var _children = node.children.map(addKeyIfMissing);\n\n      var _contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(node, entityMap), {\n        parent: parentRef.getKey(),\n        children: List(_children.map(function (child) {\n          return child.key;\n        })),\n        prevSibling: _index === 0 ? null : siblings.get(_index - 1),\n        nextSibling: _index === siblings.size - 1 ? null : siblings.get(_index + 1)\n      })); // push node to blockMap\n\n\n      blockMap = blockMap.set(_contentBlockNode.getKey(), _contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n      stack = updateNodeStack(stack, _children, _contentBlockNode);\n    }\n\n    return blockMap;\n  }, OrderedMap());\n};\n\nvar decodeContentBlocks = function decodeContentBlocks(blocks, entityMap) {\n  return OrderedMap(blocks.map(function (block) {\n    var contentBlock = new ContentBlock(decodeBlockNodeConfig(block, entityMap));\n    return [contentBlock.getKey(), contentBlock];\n  }));\n};\n\nvar decodeRawBlocks = function decodeRawBlocks(rawState, entityMap) {\n  var isTreeRawBlock = rawState.blocks.find(function (block) {\n    return Array.isArray(block.children) && block.children.length > 0;\n  });\n  var rawBlocks = experimentalTreeDataSupport && !isTreeRawBlock ? DraftTreeAdapter.fromRawStateToRawTreeState(rawState).blocks : rawState.blocks;\n\n  if (!experimentalTreeDataSupport) {\n    return decodeContentBlocks(isTreeRawBlock ? DraftTreeAdapter.fromRawTreeStateToRawState(rawState).blocks : rawBlocks, entityMap);\n  }\n\n  var blockMap = decodeContentBlockNodes(rawBlocks, entityMap); // in dev mode, check that the tree invariants are met\n\n  if (process.env.NODE_ENV !== \"production\") {\n    !DraftTreeInvariants.isValidTree(blockMap) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should be a valid tree') : invariant(false) : void 0;\n  }\n\n  return blockMap;\n};\n\nvar decodeRawEntityMap = function decodeRawEntityMap(rawState) {\n  var rawEntityMap = rawState.entityMap;\n  var entityMap = {}; // TODO: Update this once we completely remove DraftEntity\n\n  Object.keys(rawEntityMap).forEach(function (rawEntityKey) {\n    var _rawEntityMap$rawEnti = rawEntityMap[rawEntityKey],\n        type = _rawEntityMap$rawEnti.type,\n        mutability = _rawEntityMap$rawEnti.mutability,\n        data = _rawEntityMap$rawEnti.data; // get the key reference to created entity\n\n    entityMap[rawEntityKey] = DraftEntity.__create(type, mutability, data || {});\n  });\n  return entityMap;\n};\n\nvar convertFromRawToDraftState = function convertFromRawToDraftState(rawState) {\n  !Array.isArray(rawState.blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentState') : invariant(false) : void 0; // decode entities\n\n  var entityMap = decodeRawEntityMap(rawState); // decode blockMap\n\n  var blockMap = decodeRawBlocks(rawState, entityMap); // create initial selection\n\n  var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n  return new ContentState({\n    blockMap: blockMap,\n    entityMap: entityMap,\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n};\n\nmodule.exports = convertFromRawToDraftState;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar traverseInDepthOrder = function traverseInDepthOrder(blocks, fn) {\n  var stack = [].concat(blocks).reverse();\n\n  while (stack.length) {\n    var _block = stack.pop();\n\n    fn(_block);\n    var children = _block.children;\n    !Array.isArray(children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid tree raw block') : invariant(false) : void 0;\n    stack = stack.concat([].concat(children.reverse()));\n  }\n};\n\nvar isListBlock = function isListBlock(block) {\n  if (!(block && block.type)) {\n    return false;\n  }\n\n  var type = block.type;\n  return type === 'unordered-list-item' || type === 'ordered-list-item';\n};\n\nvar addDepthToChildren = function addDepthToChildren(block) {\n  if (Array.isArray(block.children)) {\n    block.children = block.children.map(function (child) {\n      return child.type === block.type ? _objectSpread({}, child, {\n        depth: (block.depth || 0) + 1\n      }) : child;\n    });\n  }\n};\n/**\n * This adapter is intended to be be used as an adapter to draft tree data\n *\n * draft state <=====> draft tree state\n */\n\n\nvar DraftTreeAdapter = {\n  /**\n   * Converts from a tree raw state back to draft raw state\n   */\n  fromRawTreeStateToRawState: function fromRawTreeStateToRawState(draftTreeState) {\n    var blocks = draftTreeState.blocks;\n    var transformedBlocks = [];\n    !Array.isArray(blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid raw state') : invariant(false) : void 0;\n\n    if (!Array.isArray(blocks) || !blocks.length) {\n      return draftTreeState;\n    }\n\n    traverseInDepthOrder(blocks, function (block) {\n      var newBlock = _objectSpread({}, block);\n\n      if (isListBlock(block)) {\n        newBlock.depth = newBlock.depth || 0;\n        addDepthToChildren(block); // if it's a non-leaf node, we don't do anything else\n\n        if (block.children != null && block.children.length > 0) {\n          return;\n        }\n      }\n\n      delete newBlock.children;\n      transformedBlocks.push(newBlock);\n    });\n    draftTreeState.blocks = transformedBlocks;\n    return _objectSpread({}, draftTreeState, {\n      blocks: transformedBlocks\n    });\n  },\n\n  /**\n   * Converts from draft raw state to tree draft state\n   */\n  fromRawStateToRawTreeState: function fromRawStateToRawTreeState(draftState) {\n    var transformedBlocks = [];\n    var parentStack = [];\n    draftState.blocks.forEach(function (block) {\n      var isList = isListBlock(block);\n      var depth = block.depth || 0;\n\n      var treeBlock = _objectSpread({}, block, {\n        children: []\n      });\n\n      if (!isList) {\n        transformedBlocks.push(treeBlock);\n        return;\n      }\n\n      var lastParent = parentStack[0]; // block is non-nested & there are no nested blocks, directly push block\n\n      if (lastParent == null && depth === 0) {\n        transformedBlocks.push(treeBlock); // block is first nested block or previous nested block is at a lower level\n      } else if (lastParent == null || lastParent.depth < depth - 1) {\n        // create new parent block\n        var newParent = {\n          key: generateRandomKey(),\n          text: '',\n          depth: depth - 1,\n          type: block.type,\n          children: [],\n          entityRanges: [],\n          inlineStyleRanges: []\n        };\n        parentStack.unshift(newParent);\n\n        if (depth === 1) {\n          // add as a root-level block\n          transformedBlocks.push(newParent);\n        } else if (lastParent != null) {\n          // depth > 1 => also add as previous parent's child\n          lastParent.children.push(newParent);\n        }\n\n        newParent.children.push(treeBlock);\n      } else if (lastParent.depth === depth - 1) {\n        // add as child of last parent\n        lastParent.children.push(treeBlock);\n      } else {\n        // pop out parents at levels above this one from the parent stack\n        while (lastParent != null && lastParent.depth >= depth) {\n          parentStack.shift();\n          lastParent = parentStack[0];\n        }\n\n        if (depth > 0) {\n          lastParent.children.push(treeBlock);\n        } else {\n          transformedBlocks.push(treeBlock);\n        }\n      }\n    });\n    return _objectSpread({}, draftState, {\n      blocks: transformedBlocks\n    });\n  }\n};\nmodule.exports = DraftTreeAdapter;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar warning = require(\"fbjs/lib/warning\");\n\nvar DraftTreeInvariants = {\n  /**\n   * Check if the block is valid\n   */\n  isValidBlock: function isValidBlock(block, blockMap) {\n    var key = block.getKey(); // is its parent's child\n\n    var parentKey = block.getParentKey();\n\n    if (parentKey != null) {\n      var parent = blockMap.get(parentKey);\n\n      if (!parent.getChildKeys().includes(key)) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing parent -> child pointer on %s', key) : void 0;\n        return false;\n      }\n    } // is its children's parent\n\n\n    var children = block.getChildKeys().map(function (k) {\n      return blockMap.get(k);\n    });\n\n    if (!children.every(function (c) {\n      return c.getParentKey() === key;\n    })) {\n      process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing child -> parent pointer on %s', key) : void 0;\n      return false;\n    } // is its previous sibling's next sibling\n\n\n    var prevSiblingKey = block.getPrevSiblingKey();\n\n    if (prevSiblingKey != null) {\n      var prevSibling = blockMap.get(prevSiblingKey);\n\n      if (prevSibling.getNextSiblingKey() !== key) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing nextSibling pointer on %s's prevSibling\", key) : void 0;\n        return false;\n      }\n    } // is its next sibling's previous sibling\n\n\n    var nextSiblingKey = block.getNextSiblingKey();\n\n    if (nextSiblingKey != null) {\n      var nextSibling = blockMap.get(nextSiblingKey);\n\n      if (nextSibling.getPrevSiblingKey() !== key) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing prevSibling pointer on %s's nextSibling\", key) : void 0;\n        return false;\n      }\n    } // no 2-node cycles\n\n\n    if (nextSiblingKey !== null && prevSiblingKey !== null) {\n      if (prevSiblingKey === nextSiblingKey) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree has a two-node cycle at %s', key) : void 0;\n        return false;\n      }\n    } // if it's a leaf node, it has text but no children\n\n\n    if (block.text != '') {\n      if (block.getChildKeys().size > 0) {\n        process.env.NODE_ENV !== \"production\" ? warning(true, 'Leaf node %s has children', key) : void 0;\n        return false;\n      }\n    }\n\n    return true;\n  },\n\n  /**\n   * Checks that this is a connected tree on all the blocks\n   * starting from the first block, traversing nextSibling and child pointers\n   * should be a tree (preorder traversal - parent, then children)\n   * num of connected node === number of blocks\n   */\n  isConnectedTree: function isConnectedTree(blockMap) {\n    // exactly one node has no previous sibling + no parent\n    var eligibleFirstNodes = blockMap.toArray().filter(function (block) {\n      return block.getParentKey() == null && block.getPrevSiblingKey() == null;\n    });\n\n    if (eligibleFirstNodes.length !== 1) {\n      process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. More or less than one first node') : void 0;\n      return false;\n    }\n\n    var firstNode = eligibleFirstNodes.shift();\n    var nodesSeen = 0;\n    var currentKey = firstNode.getKey();\n    var visitedStack = [];\n\n    while (currentKey != null) {\n      var currentNode = blockMap.get(currentKey);\n      var childKeys = currentNode.getChildKeys();\n      var nextSiblingKey = currentNode.getNextSiblingKey(); // if the node has children, add parent's next sibling to stack and go to children\n\n      if (childKeys.size > 0) {\n        if (nextSiblingKey != null) {\n          visitedStack.unshift(nextSiblingKey);\n        }\n\n        var children = childKeys.map(function (k) {\n          return blockMap.get(k);\n        });\n\n        var _firstNode = children.find(function (block) {\n          return block.getPrevSiblingKey() == null;\n        });\n\n        if (_firstNode == null) {\n          process.env.NODE_ENV !== \"production\" ? warning(true, '%s has no first child', currentKey) : void 0;\n          return false;\n        }\n\n        currentKey = _firstNode.getKey(); // TODO(T32490138): Deal with multi-node cycles here\n      } else {\n        if (currentNode.getNextSiblingKey() != null) {\n          currentKey = currentNode.getNextSiblingKey();\n        } else {\n          currentKey = visitedStack.shift();\n        }\n      }\n\n      nodesSeen++;\n    }\n\n    if (nodesSeen !== blockMap.size) {\n      process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. %s nodes were seen instead of %s', nodesSeen, blockMap.size) : void 0;\n      return false;\n    }\n\n    return true;\n  },\n\n  /**\n   * Checks that the block map is a connected tree with valid blocks\n   */\n  isValidTree: function isValidTree(blockMap) {\n    var _this = this;\n\n    var blocks = blockMap.toArray();\n\n    if (!blocks.every(function (block) {\n      return _this.isValidBlock(block, blockMap);\n    })) {\n      return false;\n    }\n\n    return this.isConnectedTree(blockMap);\n  }\n};\nmodule.exports = DraftTreeInvariants;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\n\nfunction createCharacterList(inlineStyles, entities) {\n  var characterArray = inlineStyles.map(function (style, ii) {\n    var entity = entities[ii];\n    return CharacterMetadata.create({\n      style: style,\n      entity: entity\n    });\n  });\n  return List(characterArray);\n}\n\nmodule.exports = createCharacterList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar substr = UnicodeUtils.substr;\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeEntityRanges(text, ranges) {\n  var entities = Array(text.length).fill(null);\n\n  if (ranges) {\n    ranges.forEach(function (range) {\n      // Using Unicode-enabled substrings converted to JavaScript lengths,\n      // fill the output array with entity keys.\n      var start = substr(text, 0, range.offset).length;\n      var end = start + substr(text, range.offset, range.length).length;\n\n      for (var ii = start; ii < end; ii++) {\n        entities[ii] = range.key;\n      }\n    });\n  }\n\n  return entities;\n}\n\nmodule.exports = decodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar _require = require(\"immutable\"),\n    OrderedSet = _require.OrderedSet;\n\nvar substr = UnicodeUtils.substr;\nvar EMPTY_SET = OrderedSet();\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeInlineStyleRanges(text, ranges) {\n  var styles = Array(text.length).fill(EMPTY_SET);\n\n  if (ranges) {\n    ranges.forEach(function (range) {\n      var cursor = substr(text, 0, range.offset).length;\n      var end = cursor + substr(text, range.offset, range.length).length;\n\n      while (cursor < end) {\n        styles[cursor] = styles[cursor].add(range.style);\n        cursor++;\n      }\n    });\n  }\n\n  return styles;\n}\n\nmodule.exports = decodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeBoundingClientRect = require(\"./getRangeBoundingClientRect\");\n/**\n * Return the bounding ClientRect for the visible DOM selection, if any.\n * In cases where there are no selected ranges or the bounding rect is\n * temporarily invalid, return null.\n *\n * When using from an iframe, you should pass the iframe window object\n */\n\n\nfunction getVisibleSelectionRect(global) {\n  var selection = global.getSelection();\n\n  if (!selection.rangeCount) {\n    return null;\n  }\n\n  var range = selection.getRangeAt(0);\n  var boundingRect = getRangeBoundingClientRect(range);\n  var top = boundingRect.top,\n      right = boundingRect.right,\n      bottom = boundingRect.bottom,\n      left = boundingRect.left; // When a re-render leads to a node being removed, the DOM selection will\n  // temporarily be placed on an ancestor node, which leads to an invalid\n  // bounding rect. Discard this state.\n\n  if (top === 0 && right === 0 && bottom === 0 && left === 0) {\n    return null;\n  }\n\n  return boundingRect;\n}\n\nmodule.exports = getVisibleSelectionRect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\n/**\n * Like range.getBoundingClientRect() but normalizes for browser bugs.\n */\nfunction getRangeBoundingClientRect(range) {\n  // \"Return a DOMRect object describing the smallest rectangle that includes\n  // the first rectangle in list and all of the remaining rectangles of which\n  // the height or width is not zero.\"\n  // http://www.w3.org/TR/cssom-view/#dom-range-getboundingclientrect\n  var rects = getRangeClientRects(range);\n  var top = 0;\n  var right = 0;\n  var bottom = 0;\n  var left = 0;\n\n  if (rects.length) {\n    // If the first rectangle has 0 width, we use the second, this is needed\n    // because Chrome renders a 0 width rectangle when the selection contains\n    // a line break.\n    if (rects.length > 1 && rects[0].width === 0) {\n      var _rects$ = rects[1];\n      top = _rects$.top;\n      right = _rects$.right;\n      bottom = _rects$.bottom;\n      left = _rects$.left;\n    } else {\n      var _rects$2 = rects[0];\n      top = _rects$2.top;\n      right = _rects$2.right;\n      bottom = _rects$2.bottom;\n      left = _rects$2.left;\n    }\n\n    for (var ii = 1; ii < rects.length; ii++) {\n      var rect = rects[ii];\n\n      if (rect.height !== 0 && rect.width !== 0) {\n        top = Math.min(top, rect.top);\n        right = Math.max(right, rect.right);\n        bottom = Math.max(bottom, rect.bottom);\n        left = Math.min(left, rect.left);\n      }\n    }\n  }\n\n  return {\n    top: top,\n    right: right,\n    bottom: bottom,\n    left: left,\n    width: right - left,\n    height: bottom - top\n  };\n}\n\nmodule.exports = getRangeBoundingClientRect;","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col)  {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint >  lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+  totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n            var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount  = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount  = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n    PATTERN_POSITION_TABLE : [\n\t    [],\n\t    [6, 18],\n\t    [6, 22],\n\t    [6, 26],\n\t    [6, 30],\n\t    [6, 34],\n\t    [6, 22, 38],\n\t    [6, 24, 42],\n\t    [6, 26, 46],\n\t    [6, 28, 50],\n\t    [6, 30, 54],\t\t\n\t    [6, 32, 58],\n\t    [6, 34, 62],\n\t    [6, 26, 46, 66],\n\t    [6, 26, 48, 70],\n\t    [6, 26, 50, 74],\n\t    [6, 30, 54, 78],\n\t    [6, 30, 56, 82],\n\t    [6, 30, 58, 86],\n\t    [6, 34, 62, 90],\n\t    [6, 28, 50, 72, 94],\n\t    [6, 26, 50, 74, 98],\n\t    [6, 30, 54, 78, 102],\n\t    [6, 28, 54, 80, 106],\n\t    [6, 32, 58, 84, 110],\n\t    [6, 30, 58, 86, 114],\n\t    [6, 34, 62, 90, 118],\n\t    [6, 26, 50, 74, 98, 122],\n\t    [6, 30, 54, 78, 102, 126],\n\t    [6, 26, 52, 78, 104, 130],\n\t    [6, 30, 56, 82, 108, 134],\n\t    [6, 34, 60, 86, 112, 138],\n\t    [6, 30, 58, 86, 114, 142],\n\t    [6, 34, 62, 90, 118, 146],\n\t    [6, 30, 54, 78, 102, 126, 150],\n\t    [6, 24, 50, 76, 102, 128, 154],\n\t    [6, 28, 54, 80, 106, 132, 158],\n\t    [6, 32, 58, 84, 110, 136, 162],\n\t    [6, 26, 54, 82, 110, 138, 166],\n\t    [6, 30, 58, 86, 114, 142, 170]\n    ],\n\n    G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n    G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n    G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n    getBCHTypeInfo : function(data) {\n\t    var d = data << 10;\n\t    while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t    d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t    }\n\t    return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n    },\n\n    getBCHTypeNumber : function(data) {\n\t    var d = data << 12;\n\t    while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t    d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t    }\n\t    return (data << 12) | d;\n    },\n\n    getBCHDigit : function(data) {\n\n\t    var digit = 0;\n\n\t    while (data != 0) {\n\t\t    digit++;\n\t\t    data >>>= 1;\n\t    }\n\n\t    return digit;\n    },\n\n    getPatternPosition : function(typeNumber) {\n\t    return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n    },\n\n    getMask : function(maskPattern, i, j) {\n\t    \n\t    switch (maskPattern) {\n\t\t    \n\t    case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t    case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t    case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t    case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t    case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t    case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t    case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t    case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t    default :\n\t\t    throw new Error(\"bad maskPattern:\" + maskPattern);\n\t    }\n    },\n\n    getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t    var a = new Polynomial([1], 0);\n\n\t    for (var i = 0; i < errorCorrectLength; i++) {\n\t\t    a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t    }\n\n\t    return a;\n    },\n\n    getLengthInBits : function(mode, type) {\n\n\t    if (1 <= type && type < 10) {\n\n\t\t    // 1 - 9\n\n\t\t    switch(mode) {\n\t\t    case Mode.MODE_NUMBER \t: return 10;\n\t\t    case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t    case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t    case Mode.MODE_KANJI  \t: return 8;\n\t\t    default :\n\t\t\t    throw new Error(\"mode:\" + mode);\n\t\t    }\n\n\t    } else if (type < 27) {\n\n\t\t    // 10 - 26\n\n\t\t    switch(mode) {\n\t\t    case Mode.MODE_NUMBER \t: return 12;\n\t\t    case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t    case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t    case Mode.MODE_KANJI  \t: return 10;\n\t\t    default :\n\t\t\t    throw new Error(\"mode:\" + mode);\n\t\t    }\n\n\t    } else if (type < 41) {\n\n\t\t    // 27 - 40\n\n\t\t    switch(mode) {\n\t\t    case Mode.MODE_NUMBER \t: return 14;\n\t\t    case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t    case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t    case Mode.MODE_KANJI  \t: return 12;\n\t\t    default :\n\t\t\t    throw new Error(\"mode:\" + mode);\n\t\t    }\n\n\t    } else {\n\t\t    throw new Error(\"type:\" + type);\n\t    }\n    },\n\n    getLostPoint : function(qrCode) {\n\t    \n\t    var moduleCount = qrCode.getModuleCount();\n\t    \n\t    var lostPoint = 0;\n\t    \n\t    // LEVEL1\n\t    \n\t    for (var row = 0; row < moduleCount; row++) {\n\n\t\t    for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t    var sameCount = 0;\n\t\t\t    var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t    if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t    continue;\n\t\t\t\t    }\n\n\t\t\t\t    for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t    if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t    continue;\n\t\t\t\t\t    }\n\n\t\t\t\t\t    if (r == 0 && c == 0) {\n\t\t\t\t\t\t    continue;\n\t\t\t\t\t    }\n\n\t\t\t\t\t    if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t    sameCount++;\n\t\t\t\t\t    }\n\t\t\t\t    }\n\t\t\t    }\n\n\t\t\t    if (sameCount > 5) {\n\t\t\t\t    lostPoint += (3 + sameCount - 5);\n\t\t\t    }\n\t\t    }\n\t    }\n\n\t    // LEVEL2\n\n\t    for (var row = 0; row < moduleCount - 1; row++) {\n\t\t    for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t    var count = 0;\n\t\t\t    if (qrCode.isDark(row,     col    ) ) count++;\n\t\t\t    if (qrCode.isDark(row + 1, col    ) ) count++;\n\t\t\t    if (qrCode.isDark(row,     col + 1) ) count++;\n\t\t\t    if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t    if (count == 0 || count == 4) {\n\t\t\t\t    lostPoint += 3;\n\t\t\t    }\n\t\t    }\n\t    }\n\n\t    // LEVEL3\n\n\t    for (var row = 0; row < moduleCount; row++) {\n\t\t    for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t    if (qrCode.isDark(row, col)\n\t\t\t\t\t    && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t    &&  qrCode.isDark(row, col + 2)\n\t\t\t\t\t    &&  qrCode.isDark(row, col + 3)\n\t\t\t\t\t    &&  qrCode.isDark(row, col + 4)\n\t\t\t\t\t    && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t    &&  qrCode.isDark(row, col + 6) ) {\n\t\t\t\t    lostPoint += 40;\n\t\t\t    }\n\t\t    }\n\t    }\n\n\t    for (var col = 0; col < moduleCount; col++) {\n\t\t    for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t    if (qrCode.isDark(row, col)\n\t\t\t\t\t    && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t    &&  qrCode.isDark(row + 2, col)\n\t\t\t\t\t    &&  qrCode.isDark(row + 3, col)\n\t\t\t\t\t    &&  qrCode.isDark(row + 4, col)\n\t\t\t\t\t    && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t    &&  qrCode.isDark(row + 6, col) ) {\n\t\t\t\t    lostPoint += 40;\n\t\t\t    }\n\t\t    }\n\t    }\n\n\t    // LEVEL4\n\t    \n\t    var darkCount = 0;\n\n\t    for (var col = 0; col < moduleCount; col++) {\n\t\t    for (var row = 0; row < moduleCount; row++) {\n\t\t\t    if (qrCode.isDark(row, col) ) {\n\t\t\t\t    darkCount++;\n\t\t\t    }\n\t\t    }\n\t    }\n\t    \n\t    var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t    lostPoint += ratio * 10;\n\n\t    return lostPoint;\t\t\n    }\n};\n\nmodule.exports = QRUtil;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { getThemeProps, useTheme } from '@material-ui/styles';\nexport default function useMediaQuery(queryInput) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var theme = useTheme();\n  var props = getThemeProps({\n    theme: theme,\n    name: 'MuiUseMediaQuery',\n    props: {}\n  });\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof queryInput === 'function' && theme === null) {\n      console.error(['Material-UI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n    }\n  }\n\n  var query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n  query = query.replace(/^@media( ?)/m, ''); // Wait for jsdom to support the match media feature.\n  // All the browsers Material-UI support have this built-in.\n  // This defensive check is here for simplicity.\n  // Most of the time, the match media logic isn't central to people tests.\n\n  var supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n\n  var _props$options = _extends({}, props, options),\n      _props$options$defaul = _props$options.defaultMatches,\n      defaultMatches = _props$options$defaul === void 0 ? false : _props$options$defaul,\n      _props$options$matchM = _props$options.matchMedia,\n      matchMedia = _props$options$matchM === void 0 ? supportMatchMedia ? window.matchMedia : null : _props$options$matchM,\n      _props$options$noSsr = _props$options.noSsr,\n      noSsr = _props$options$noSsr === void 0 ? false : _props$options$noSsr,\n      _props$options$ssrMat = _props$options.ssrMatchMedia,\n      ssrMatchMedia = _props$options$ssrMat === void 0 ? null : _props$options$ssrMat;\n\n  var _React$useState = React.useState(function () {\n    if (noSsr && supportMatchMedia) {\n      return matchMedia(query).matches;\n    }\n\n    if (ssrMatchMedia) {\n      return ssrMatchMedia(query).matches;\n    } // Once the component is mounted, we rely on the\n    // event listeners to return the correct matches value.\n\n\n    return defaultMatches;\n  }),\n      match = _React$useState[0],\n      setMatch = _React$useState[1];\n\n  React.useEffect(function () {\n    var active = true;\n\n    if (!supportMatchMedia) {\n      return undefined;\n    }\n\n    var queryList = matchMedia(query);\n\n    var updateMatch = function updateMatch() {\n      // Workaround Safari wrong implementation of matchMedia\n      // TODO can we remove it?\n      // https://github.com/mui-org/material-ui/pull/17315#issuecomment-528286677\n      if (active) {\n        setMatch(queryList.matches);\n      }\n    };\n\n    updateMatch();\n    queryList.addListener(updateMatch);\n    return function () {\n      active = false;\n      queryList.removeListener(updateMatch);\n    };\n  }, [query, matchMedia, supportMatchMedia]);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue({\n      query: query,\n      match: match\n    });\n  }\n\n  return match;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport { darken, fade, lighten } from '../styles/colorManipulator';\nimport TableContext from '../Table/TableContext';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nexport var styles = function styles(theme) {\n  return {\n    /* Styles applied to the root element. */\n    root: _extends({}, theme.typography.body2, {\n      display: 'table-cell',\n      verticalAlign: 'inherit',\n      // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n      // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n      borderBottom: \"1px solid\\n    \".concat(theme.palette.type === 'light' ? lighten(fade(theme.palette.divider, 1), 0.88) : darken(fade(theme.palette.divider, 1), 0.68)),\n      textAlign: 'left',\n      padding: 16\n    }),\n\n    /* Styles applied to the root element if `variant=\"head\"` or `context.table.head`. */\n    head: {\n      color: theme.palette.text.primary,\n      lineHeight: theme.typography.pxToRem(24),\n      fontWeight: theme.typography.fontWeightMedium\n    },\n\n    /* Styles applied to the root element if `variant=\"body\"` or `context.table.body`. */\n    body: {\n      color: theme.palette.text.primary\n    },\n\n    /* Styles applied to the root element if `variant=\"footer\"` or `context.table.footer`. */\n    footer: {\n      color: theme.palette.text.secondary,\n      lineHeight: theme.typography.pxToRem(21),\n      fontSize: theme.typography.pxToRem(12)\n    },\n\n    /* Styles applied to the root element if `size=\"small\"`. */\n    sizeSmall: {\n      padding: '6px 24px 6px 16px',\n      '&:last-child': {\n        paddingRight: 16\n      },\n      '&$paddingCheckbox': {\n        width: 24,\n        // prevent the checkbox column from growing\n        padding: '0 12px 0 16px',\n        '&:last-child': {\n          paddingLeft: 12,\n          paddingRight: 16\n        },\n        '& > *': {\n          padding: 0\n        }\n      }\n    },\n\n    /* Styles applied to the root element if `padding=\"checkbox\"`. */\n    paddingCheckbox: {\n      width: 48,\n      // prevent the checkbox column from growing\n      padding: '0 0 0 4px',\n      '&:last-child': {\n        paddingLeft: 0,\n        paddingRight: 4\n      }\n    },\n\n    /* Styles applied to the root element if `padding=\"none\"`. */\n    paddingNone: {\n      padding: 0,\n      '&:last-child': {\n        padding: 0\n      }\n    },\n\n    /* Styles applied to the root element if `align=\"left\"`. */\n    alignLeft: {\n      textAlign: 'left'\n    },\n\n    /* Styles applied to the root element if `align=\"center\"`. */\n    alignCenter: {\n      textAlign: 'center'\n    },\n\n    /* Styles applied to the root element if `align=\"right\"`. */\n    alignRight: {\n      textAlign: 'right',\n      flexDirection: 'row-reverse'\n    },\n\n    /* Styles applied to the root element if `align=\"justify\"`. */\n    alignJustify: {\n      textAlign: 'justify'\n    },\n\n    /* Styles applied to the root element if `context.table.stickyHeader={true}`. */\n    stickyHeader: {\n      position: 'sticky',\n      top: 0,\n      left: 0,\n      zIndex: 2,\n      backgroundColor: theme.palette.background.default\n    }\n  };\n};\n/**\n * The component renders a `<th>` element when the parent context is a header\n * or otherwise a `<td>` element.\n */\n\nvar TableCell = /*#__PURE__*/React.forwardRef(function TableCell(props, ref) {\n  var _props$align = props.align,\n      align = _props$align === void 0 ? 'inherit' : _props$align,\n      classes = props.classes,\n      className = props.className,\n      component = props.component,\n      paddingProp = props.padding,\n      scopeProp = props.scope,\n      sizeProp = props.size,\n      sortDirection = props.sortDirection,\n      variantProp = props.variant,\n      other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"component\", \"padding\", \"scope\", \"size\", \"sortDirection\", \"variant\"]);\n\n  var table = React.useContext(TableContext);\n  var tablelvl2 = React.useContext(Tablelvl2Context);\n  var isHeadCell = tablelvl2 && tablelvl2.variant === 'head';\n  var role;\n  var Component;\n\n  if (component) {\n    Component = component;\n    role = isHeadCell ? 'columnheader' : 'cell';\n  } else {\n    Component = isHeadCell ? 'th' : 'td';\n  }\n\n  var scope = scopeProp;\n\n  if (!scope && isHeadCell) {\n    scope = 'col';\n  }\n\n  var padding = paddingProp || (table && table.padding ? table.padding : 'default');\n  var size = sizeProp || (table && table.size ? table.size : 'medium');\n  var variant = variantProp || tablelvl2 && tablelvl2.variant;\n  var ariaSort = null;\n\n  if (sortDirection) {\n    ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n  }\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref,\n    className: clsx(classes.root, classes[variant], className, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], padding !== 'default' && classes[\"padding\".concat(capitalize(padding))], size !== 'medium' && classes[\"size\".concat(capitalize(size))], variant === 'head' && table && table.stickyHeader && classes.stickyHeader),\n    \"aria-sort\": ariaSort,\n    role: role,\n    scope: scope\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableCell.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n\n  /**\n   * Set the text-align on the table cell content.\n   *\n   * Monetary or generally number fields **should be right aligned** as that allows\n   * you to add them up quickly in your head without having to worry about decimals.\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n\n  /**\n   * The table cell contents.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType,\n\n  /**\n   * Sets the padding applied to the cell.\n   * By default, the Table parent component set the value (`default`).\n   */\n  padding: PropTypes.oneOf(['checkbox', 'default', 'none']),\n\n  /**\n   * Set scope attribute.\n   */\n  scope: PropTypes.string,\n\n  /**\n   * Specify the size of the cell.\n   * By default, the Table parent component set the value (`medium`).\n   */\n  size: PropTypes.oneOf(['medium', 'small']),\n\n  /**\n   * Set aria-sort direction.\n   */\n  sortDirection: PropTypes.oneOf(['asc', 'desc', false]),\n\n  /**\n   * Specify the cell type.\n   * By default, the TableHead, TableBody or TableFooter parent component set the value.\n   */\n  variant: PropTypes.oneOf(['body', 'footer', 'head'])\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTableCell'\n})(TableCell);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nexport var styles = {\n  /* Styles applied to the root element. */\n  root: {\n    width: '100%',\n    overflowX: 'auto'\n  }\n};\nvar TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(props, ref) {\n  var classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? 'div' : _props$component,\n      other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\"]);\n\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref,\n    className: clsx(classes.root, className)\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes = {\n  /**\n   * The table itself, normally `<Table />`\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTableContainer'\n})(TableContainer);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport TableContext from './TableContext';\nexport var styles = function styles(theme) {\n  return {\n    /* Styles applied to the root element. */\n    root: {\n      display: 'table',\n      width: '100%',\n      borderCollapse: 'collapse',\n      borderSpacing: 0,\n      '& caption': _extends({}, theme.typography.body2, {\n        padding: theme.spacing(2),\n        color: theme.palette.text.secondary,\n        textAlign: 'left',\n        captionSide: 'bottom'\n      })\n    },\n\n    /* Styles applied to the root element if `stickyHeader={true}`. */\n    stickyHeader: {\n      borderCollapse: 'separate'\n    }\n  };\n};\nvar defaultComponent = 'table';\nvar Table = /*#__PURE__*/React.forwardRef(function Table(props, ref) {\n  var classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? defaultComponent : _props$component,\n      _props$padding = props.padding,\n      padding = _props$padding === void 0 ? 'default' : _props$padding,\n      _props$size = props.size,\n      size = _props$size === void 0 ? 'medium' : _props$size,\n      _props$stickyHeader = props.stickyHeader,\n      stickyHeader = _props$stickyHeader === void 0 ? false : _props$stickyHeader,\n      other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"padding\", \"size\", \"stickyHeader\"]);\n\n  var table = React.useMemo(function () {\n    return {\n      padding: padding,\n      size: size,\n      stickyHeader: stickyHeader\n    };\n  }, [padding, size, stickyHeader]);\n  return /*#__PURE__*/React.createElement(TableContext.Provider, {\n    value: table\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    role: Component === defaultComponent ? null : 'table',\n    ref: ref,\n    className: clsx(classes.root, className, stickyHeader && classes.stickyHeader)\n  }, other)));\n});\nprocess.env.NODE_ENV !== \"production\" ? Table.propTypes = {\n  /**\n   * The content of the table, normally `TableHead` and `TableBody`.\n   */\n  children: PropTypes.node.isRequired,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType,\n\n  /**\n   * Allows TableCells to inherit padding of the Table.\n   */\n  padding: PropTypes.oneOf(['default', 'checkbox', 'none']),\n\n  /**\n   * Allows TableCells to inherit size of the Table.\n   */\n  size: PropTypes.oneOf(['small', 'medium']),\n\n  /**\n   * Set the header sticky.\n   *\n   * ⚠️ It doesn't work with IE 11.\n   */\n  stickyHeader: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTable'\n})(Table);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nexport var styles = {\n  /* Styles applied to the root element. */\n  root: {\n    display: 'table-header-group'\n  }\n};\nvar tablelvl2 = {\n  variant: 'head'\n};\nvar defaultComponent = 'thead';\nvar TableHead = /*#__PURE__*/React.forwardRef(function TableHead(props, ref) {\n  var classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? defaultComponent : _props$component,\n      other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\"]);\n\n  return /*#__PURE__*/React.createElement(Tablelvl2Context.Provider, {\n    value: tablelvl2\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    className: clsx(classes.root, className),\n    ref: ref,\n    role: Component === defaultComponent ? null : 'rowgroup'\n  }, other)));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableHead.propTypes = {\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTableHead'\n})(TableHead);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nimport { fade } from '../styles/colorManipulator';\nexport var styles = function styles(theme) {\n  return {\n    /* Styles applied to the root element. */\n    root: {\n      color: 'inherit',\n      display: 'table-row',\n      verticalAlign: 'middle',\n      // We disable the focus ring for mouse, touch and keyboard users.\n      outline: 0,\n      '&$hover:hover': {\n        backgroundColor: theme.palette.action.hover\n      },\n      '&$selected, &$selected:hover': {\n        backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.selectedOpacity)\n      }\n    },\n\n    /* Pseudo-class applied to the root element if `selected={true}`. */\n    selected: {},\n\n    /* Pseudo-class applied to the root element if `hover={true}`. */\n    hover: {},\n\n    /* Styles applied to the root element if table variant=\"head\". */\n    head: {},\n\n    /* Styles applied to the root element if table variant=\"footer\". */\n    footer: {}\n  };\n};\nvar defaultComponent = 'tr';\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\n\nvar TableRow = /*#__PURE__*/React.forwardRef(function TableRow(props, ref) {\n  var classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? defaultComponent : _props$component,\n      _props$hover = props.hover,\n      hover = _props$hover === void 0 ? false : _props$hover,\n      _props$selected = props.selected,\n      selected = _props$selected === void 0 ? false : _props$selected,\n      other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"hover\", \"selected\"]);\n\n  var tablelvl2 = React.useContext(Tablelvl2Context);\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref,\n    className: clsx(classes.root, className, tablelvl2 && {\n      'head': classes.head,\n      'footer': classes.footer\n    }[tablelvl2.variant], hover && classes.hover, selected && classes.selected),\n    role: Component === defaultComponent ? null : 'row'\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableRow.propTypes = {\n  /**\n   * Should be valid <tr> children such as `TableCell`.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType,\n\n  /**\n   * If `true`, the table row will shade on hover.\n   */\n  hover: PropTypes.bool,\n\n  /**\n   * If `true`, the table row will have the selected shading.\n   */\n  selected: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTableRow'\n})(TableRow);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Tablelvl2Context from '../Table/Tablelvl2Context';\nexport var styles = {\n  /* Styles applied to the root element. */\n  root: {\n    display: 'table-row-group'\n  }\n};\nvar tablelvl2 = {\n  variant: 'body'\n};\nvar defaultComponent = 'tbody';\nvar TableBody = /*#__PURE__*/React.forwardRef(function TableBody(props, ref) {\n  var classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? defaultComponent : _props$component,\n      other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\"]);\n\n  return /*#__PURE__*/React.createElement(Tablelvl2Context.Provider, {\n    value: tablelvl2\n  }, /*#__PURE__*/React.createElement(Component, _extends({\n    className: clsx(classes.root, className),\n    ref: ref,\n    role: Component === defaultComponent ? null : 'rowgroup'\n  }, other)));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableBody.propTypes = {\n  /**\n   * The content of the component, normally `TableRow`.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTableBody'\n})(TableBody);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nexport var styles = {\n  /* Styles applied to the root element. */\n  root: {\n    margin: 0,\n    padding: '16px 24px',\n    flex: '0 0 auto'\n  }\n};\nvar DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(props, ref) {\n  var children = props.children,\n      classes = props.classes,\n      className = props.className,\n      _props$disableTypogra = props.disableTypography,\n      disableTypography = _props$disableTypogra === void 0 ? false : _props$disableTypogra,\n      other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"disableTypography\"]);\n\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other), disableTypography ? children : /*#__PURE__*/React.createElement(Typography, {\n    component: \"h2\",\n    variant: \"h6\"\n  }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogTitle.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * If `true`, the children won't be wrapped by a typography component.\n   * For instance, this can be useful to render an h4 instead of the default h2.\n   */\n  disableTypography: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiDialogTitle'\n})(DialogTitle);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n  return {\n    /* Styles applied to the root element. */\n    root: _extends({}, theme.typography.button, {\n      boxSizing: 'border-box',\n      minHeight: 36,\n      transition: theme.transitions.create(['background-color', 'box-shadow', 'border'], {\n        duration: theme.transitions.duration.short\n      }),\n      borderRadius: '50%',\n      padding: 0,\n      minWidth: 0,\n      width: 56,\n      height: 56,\n      boxShadow: theme.shadows[6],\n      '&:active': {\n        boxShadow: theme.shadows[12]\n      },\n      color: theme.palette.getContrastText(theme.palette.grey[300]),\n      backgroundColor: theme.palette.grey[300],\n      '&:hover': {\n        backgroundColor: theme.palette.grey.A100,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: theme.palette.grey[300]\n        },\n        '&$disabled': {\n          backgroundColor: theme.palette.action.disabledBackground\n        },\n        textDecoration: 'none'\n      },\n      '&$focusVisible': {\n        boxShadow: theme.shadows[6]\n      },\n      '&$disabled': {\n        color: theme.palette.action.disabled,\n        boxShadow: theme.shadows[0],\n        backgroundColor: theme.palette.action.disabledBackground\n      }\n    }),\n\n    /* Styles applied to the span element that wraps the children. */\n    label: {\n      width: '100%',\n      // assure the correct width for iOS Safari\n      display: 'inherit',\n      alignItems: 'inherit',\n      justifyContent: 'inherit'\n    },\n\n    /* Styles applied to the root element if `color=\"primary\"`. */\n    primary: {\n      color: theme.palette.primary.contrastText,\n      backgroundColor: theme.palette.primary.main,\n      '&:hover': {\n        backgroundColor: theme.palette.primary.dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: theme.palette.primary.main\n        }\n      }\n    },\n\n    /* Styles applied to the root element if `color=\"secondary\"`. */\n    secondary: {\n      color: theme.palette.secondary.contrastText,\n      backgroundColor: theme.palette.secondary.main,\n      '&:hover': {\n        backgroundColor: theme.palette.secondary.dark,\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: theme.palette.secondary.main\n        }\n      }\n    },\n\n    /* Styles applied to the root element if `variant=\"extended\"`. */\n    extended: {\n      borderRadius: 48 / 2,\n      padding: '0 16px',\n      width: 'auto',\n      minHeight: 'auto',\n      minWidth: 48,\n      height: 48,\n      '&$sizeSmall': {\n        width: 'auto',\n        padding: '0 8px',\n        borderRadius: 34 / 2,\n        minWidth: 34,\n        height: 34\n      },\n      '&$sizeMedium': {\n        width: 'auto',\n        padding: '0 16px',\n        borderRadius: 40 / 2,\n        minWidth: 40,\n        height: 40\n      }\n    },\n\n    /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n    focusVisible: {},\n\n    /* Pseudo-class applied to the root element if `disabled={true}`. */\n    disabled: {},\n\n    /* Styles applied to the root element if `color=\"inherit\"`. */\n    colorInherit: {\n      color: 'inherit'\n    },\n\n    /* Styles applied to the root element if `size=\"small\"``. */\n    sizeSmall: {\n      width: 40,\n      height: 40\n    },\n\n    /* Styles applied to the root element if `size=\"medium\"``. */\n    sizeMedium: {\n      width: 48,\n      height: 48\n    }\n  };\n};\nvar Fab = /*#__PURE__*/React.forwardRef(function Fab(props, ref) {\n  var children = props.children,\n      classes = props.classes,\n      className = props.className,\n      _props$color = props.color,\n      color = _props$color === void 0 ? 'default' : _props$color,\n      _props$component = props.component,\n      component = _props$component === void 0 ? 'button' : _props$component,\n      _props$disabled = props.disabled,\n      disabled = _props$disabled === void 0 ? false : _props$disabled,\n      _props$disableFocusRi = props.disableFocusRipple,\n      disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n      focusVisibleClassName = props.focusVisibleClassName,\n      _props$size = props.size,\n      size = _props$size === void 0 ? 'large' : _props$size,\n      _props$variant = props.variant,\n      variant = _props$variant === void 0 ? 'round' : _props$variant,\n      other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"disableFocusRipple\", \"focusVisibleClassName\", \"size\", \"variant\"]);\n\n  return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n    className: clsx(classes.root, className, variant !== \"round\" && classes.extended, size !== 'large' && classes[\"size\".concat(capitalize(size))], disabled && classes.disabled, {\n      'primary': classes.primary,\n      'secondary': classes.secondary,\n      'inherit': classes.colorInherit\n    }[color]),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ref: ref\n  }, other), /*#__PURE__*/React.createElement(\"span\", {\n    className: classes.label\n  }, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\n\n  /**\n   * The content of the button.\n   */\n  children: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .node.isRequired,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']),\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType,\n\n  /**\n   * If `true`, the button will be disabled.\n   */\n  disabled: PropTypes.bool,\n\n  /**\n   * If `true`, the  keyboard focus ripple will be disabled.\n   */\n  disableFocusRipple: PropTypes.bool,\n\n  /**\n   * If `true`, the ripple effect will be disabled.\n   */\n  disableRipple: PropTypes.bool,\n\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n\n  /**\n   * The size of the button.\n   * `small` is equivalent to the dense button styling.\n   */\n  size: PropTypes.oneOf(['large', 'medium', 'small']),\n\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['extended', 'round'])\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiFab'\n})(Fab);","import React from 'react';\nimport createSvgIcon from './utils/createSvgIcon';\nexport default createSvgIcon(React.createElement(\"path\", {\n  d: \"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z\"\n}), 'Phone');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { getDisplayName } from '@material-ui/utils';\nimport { getThemeProps } from '@material-ui/styles';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport useTheme from '../styles/useTheme';\nimport { keys as breakpointKeys } from '../styles/createBreakpoints';\nimport useMediaQuery from '../useMediaQuery'; // By default, returns true if screen width is the same or greater than the given breakpoint.\n\nexport var isWidthUp = function isWidthUp(breakpoint, width) {\n  var inclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n  if (inclusive) {\n    return breakpointKeys.indexOf(breakpoint) <= breakpointKeys.indexOf(width);\n  }\n\n  return breakpointKeys.indexOf(breakpoint) < breakpointKeys.indexOf(width);\n}; // By default, returns true if screen width is the same or less than the given breakpoint.\n\nexport var isWidthDown = function isWidthDown(breakpoint, width) {\n  var inclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n  if (inclusive) {\n    return breakpointKeys.indexOf(width) <= breakpointKeys.indexOf(breakpoint);\n  }\n\n  return breakpointKeys.indexOf(width) < breakpointKeys.indexOf(breakpoint);\n};\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n\nvar withWidth = function withWidth() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return function (Component) {\n    var _options$withTheme = options.withTheme,\n        withThemeOption = _options$withTheme === void 0 ? false : _options$withTheme,\n        _options$noSSR = options.noSSR,\n        noSSR = _options$noSSR === void 0 ? false : _options$noSSR,\n        initialWidthOption = options.initialWidth;\n\n    function WithWidth(props) {\n      var contextTheme = useTheme();\n      var theme = props.theme || contextTheme;\n\n      var _getThemeProps = getThemeProps({\n        theme: theme,\n        name: 'MuiWithWidth',\n        props: _extends({}, props)\n      }),\n          initialWidth = _getThemeProps.initialWidth,\n          width = _getThemeProps.width,\n          other = _objectWithoutProperties(_getThemeProps, [\"initialWidth\", \"width\"]);\n\n      var _React$useState = React.useState(false),\n          mountedState = _React$useState[0],\n          setMountedState = _React$useState[1];\n\n      useEnhancedEffect(function () {\n        setMountedState(true);\n      }, []);\n      /**\n       * innerWidth |xs      sm      md      lg      xl\n       *            |-------|-------|-------|-------|------>\n       * width      |  xs   |  sm   |  md   |  lg   |  xl\n       */\n\n      var keys = theme.breakpoints.keys.slice().reverse();\n      var widthComputed = keys.reduce(function (output, key) {\n        // eslint-disable-next-line react-hooks/rules-of-hooks\n        var matches = useMediaQuery(theme.breakpoints.up(key));\n        return !output && matches ? key : output;\n      }, null);\n\n      var more = _extends({\n        width: width || (mountedState || noSSR ? widthComputed : undefined) || initialWidth || initialWidthOption\n      }, withThemeOption ? {\n        theme: theme\n      } : {}, other); // When rendering the component on the server,\n      // we have no idea about the client browser screen width.\n      // In order to prevent blinks and help the reconciliation of the React tree\n      // we are not rendering the child component.\n      //\n      // An alternative is to use the `initialWidth` property.\n\n\n      if (more.width === undefined) {\n        return null;\n      }\n\n      return /*#__PURE__*/React.createElement(Component, more);\n    }\n\n    process.env.NODE_ENV !== \"production\" ? WithWidth.propTypes = {\n      /**\n       * As `window.innerWidth` is unavailable on the server,\n       * we default to rendering an empty component during the first mount.\n       * You might want to use an heuristic to approximate\n       * the screen width of the client browser screen width.\n       *\n       * For instance, you could be using the user-agent or the client-hints.\n       * https://caniuse.com/#search=client%20hint\n       */\n      initialWidth: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n\n      /**\n       * @ignore\n       */\n      theme: PropTypes.object,\n\n      /**\n       * Bypass the width calculation logic.\n       */\n      width: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl'])\n    } : void 0;\n\n    if (process.env.NODE_ENV !== 'production') {\n      WithWidth.displayName = \"WithWidth(\".concat(getDisplayName(Component), \")\");\n    }\n\n    hoistNonReactStatics(WithWidth, Component);\n    return WithWidth;\n  };\n};\n\nexport default withWidth;","import PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport withWidth, { isWidthDown, isWidthUp } from '../withWidth';\nimport useTheme from '../styles/useTheme';\n/**\n * @ignore - internal component.\n */\n\nfunction HiddenJs(props) {\n  var children = props.children,\n      only = props.only,\n      width = props.width;\n  var theme = useTheme();\n  var visible = true; // `only` check is faster to get out sooner if used.\n\n  if (only) {\n    if (Array.isArray(only)) {\n      for (var i = 0; i < only.length; i += 1) {\n        var breakpoint = only[i];\n\n        if (width === breakpoint) {\n          visible = false;\n          break;\n        }\n      }\n    } else if (only && width === only) {\n      visible = false;\n    }\n  } // Allow `only` to be combined with other props. If already hidden, no need to check others.\n\n\n  if (visible) {\n    // determine visibility based on the smallest size up\n    for (var _i = 0; _i < theme.breakpoints.keys.length; _i += 1) {\n      var _breakpoint = theme.breakpoints.keys[_i];\n      var breakpointUp = props[\"\".concat(_breakpoint, \"Up\")];\n      var breakpointDown = props[\"\".concat(_breakpoint, \"Down\")];\n\n      if (breakpointUp && isWidthUp(_breakpoint, width) || breakpointDown && isWidthDown(_breakpoint, width)) {\n        visible = false;\n        break;\n      }\n    }\n  }\n\n  if (!visible) {\n    return null;\n  }\n\n  return children;\n}\n\nHiddenJs.propTypes = {\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * Specify which implementation to use.  'js' is the default, 'css' works better for\n   * server-side rendering.\n   */\n  implementation: PropTypes.oneOf(['js', 'css']),\n\n  /**\n   * You can use this prop when choosing the `js` implementation with server-side rendering.\n   *\n   * As `window.innerWidth` is unavailable on the server,\n   * we default to rendering an empty component during the first mount.\n   * You might want to use an heuristic to approximate\n   * the screen width of the client browser screen width.\n   *\n   * For instance, you could be using the user-agent or the client-hints.\n   * https://caniuse.com/#search=client%20hint\n   */\n  initialWidth: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  lgDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  lgUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  mdDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  mdUp: PropTypes.bool,\n\n  /**\n   * Hide the given breakpoint(s).\n   */\n  only: PropTypes.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']), PropTypes.arrayOf(PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']))]),\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  smDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  smUp: PropTypes.bool,\n\n  /**\n   * @ignore\n   * width prop provided by withWidth decorator.\n   */\n  width: PropTypes.string.isRequired,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  xlDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  xlUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  xsDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  xsUp: PropTypes.bool\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  HiddenJs.propTypes = exactProp(HiddenJs.propTypes);\n}\n\nexport default withWidth()(HiddenJs);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport capitalize from '../utils/capitalize';\nimport withStyles from '../styles/withStyles';\nimport useTheme from '../styles/useTheme';\n\nvar styles = function styles(theme) {\n  var hidden = {\n    display: 'none'\n  };\n  return theme.breakpoints.keys.reduce(function (acc, key) {\n    acc[\"only\".concat(capitalize(key))] = _defineProperty({}, theme.breakpoints.only(key), hidden);\n    acc[\"\".concat(key, \"Up\")] = _defineProperty({}, theme.breakpoints.up(key), hidden);\n    acc[\"\".concat(key, \"Down\")] = _defineProperty({}, theme.breakpoints.down(key), hidden);\n    return acc;\n  }, {});\n};\n/**\n * @ignore - internal component.\n */\n\n\nfunction HiddenCss(props) {\n  var children = props.children,\n      classes = props.classes,\n      className = props.className,\n      only = props.only,\n      other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"only\"]);\n\n  var theme = useTheme();\n\n  if (process.env.NODE_ENV !== 'production') {\n    var unknownProps = Object.keys(other).filter(function (propName) {\n      var isUndeclaredBreakpoint = !theme.breakpoints.keys.some(function (breakpoint) {\n        return \"\".concat(breakpoint, \"Up\") === propName || \"\".concat(breakpoint, \"Down\") === propName;\n      });\n      return isUndeclaredBreakpoint;\n    });\n\n    if (unknownProps.length > 0) {\n      console.error(\"Material-UI: Unsupported props received by `<Hidden implementation=\\\"css\\\" />`: \".concat(unknownProps.join(', '), \". Did you forget to wrap this component in a ThemeProvider declaring these breakpoints?\"));\n    }\n  }\n\n  var clsx = [];\n\n  if (className) {\n    clsx.push(className);\n  }\n\n  for (var i = 0; i < theme.breakpoints.keys.length; i += 1) {\n    var breakpoint = theme.breakpoints.keys[i];\n    var breakpointUp = props[\"\".concat(breakpoint, \"Up\")];\n    var breakpointDown = props[\"\".concat(breakpoint, \"Down\")];\n\n    if (breakpointUp) {\n      clsx.push(classes[\"\".concat(breakpoint, \"Up\")]);\n    }\n\n    if (breakpointDown) {\n      clsx.push(classes[\"\".concat(breakpoint, \"Down\")]);\n    }\n  }\n\n  if (only) {\n    var onlyBreakpoints = Array.isArray(only) ? only : [only];\n    onlyBreakpoints.forEach(function (breakpoint) {\n      clsx.push(classes[\"only\".concat(capitalize(breakpoint))]);\n    });\n  }\n\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: clsx.join(' ')\n  }, children);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? HiddenCss.propTypes = {\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * Specify which implementation to use.  'js' is the default, 'css' works better for\n   * server-side rendering.\n   */\n  implementation: PropTypes.oneOf(['js', 'css']),\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  lgDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  lgUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  mdDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  mdUp: PropTypes.bool,\n\n  /**\n   * Hide the given breakpoint(s).\n   */\n  only: PropTypes.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']), PropTypes.arrayOf(PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']))]),\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  smDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  smUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  xlDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  xlUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  xsDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  xsUp: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n  name: 'PrivateHiddenCss'\n})(HiddenCss);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport HiddenJs from './HiddenJs';\nimport HiddenCss from './HiddenCss';\n/**\n * Responsively hides children based on the selected implementation.\n */\n\nfunction Hidden(props) {\n  var _props$implementation = props.implementation,\n      implementation = _props$implementation === void 0 ? 'js' : _props$implementation,\n      _props$lgDown = props.lgDown,\n      lgDown = _props$lgDown === void 0 ? false : _props$lgDown,\n      _props$lgUp = props.lgUp,\n      lgUp = _props$lgUp === void 0 ? false : _props$lgUp,\n      _props$mdDown = props.mdDown,\n      mdDown = _props$mdDown === void 0 ? false : _props$mdDown,\n      _props$mdUp = props.mdUp,\n      mdUp = _props$mdUp === void 0 ? false : _props$mdUp,\n      _props$smDown = props.smDown,\n      smDown = _props$smDown === void 0 ? false : _props$smDown,\n      _props$smUp = props.smUp,\n      smUp = _props$smUp === void 0 ? false : _props$smUp,\n      _props$xlDown = props.xlDown,\n      xlDown = _props$xlDown === void 0 ? false : _props$xlDown,\n      _props$xlUp = props.xlUp,\n      xlUp = _props$xlUp === void 0 ? false : _props$xlUp,\n      _props$xsDown = props.xsDown,\n      xsDown = _props$xsDown === void 0 ? false : _props$xsDown,\n      _props$xsUp = props.xsUp,\n      xsUp = _props$xsUp === void 0 ? false : _props$xsUp,\n      other = _objectWithoutProperties(props, [\"implementation\", \"lgDown\", \"lgUp\", \"mdDown\", \"mdUp\", \"smDown\", \"smUp\", \"xlDown\", \"xlUp\", \"xsDown\", \"xsUp\"]);\n\n  if (implementation === 'js') {\n    return /*#__PURE__*/React.createElement(HiddenJs, _extends({\n      lgDown: lgDown,\n      lgUp: lgUp,\n      mdDown: mdDown,\n      mdUp: mdUp,\n      smDown: smDown,\n      smUp: smUp,\n      xlDown: xlDown,\n      xlUp: xlUp,\n      xsDown: xsDown,\n      xsUp: xsUp\n    }, other));\n  }\n\n  return /*#__PURE__*/React.createElement(HiddenCss, _extends({\n    lgDown: lgDown,\n    lgUp: lgUp,\n    mdDown: mdDown,\n    mdUp: mdUp,\n    smDown: smDown,\n    smUp: smUp,\n    xlDown: xlDown,\n    xlUp: xlUp,\n    xsDown: xsDown,\n    xsUp: xsUp\n  }, other));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Hidden.propTypes = {\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * Specify which implementation to use.  'js' is the default, 'css' works better for\n   * server-side rendering.\n   */\n  implementation: PropTypes.oneOf(['js', 'css']),\n\n  /**\n   * You can use this prop when choosing the `js` implementation with server-side rendering.\n   *\n   * As `window.innerWidth` is unavailable on the server,\n   * we default to rendering an empty component during the first mount.\n   * You might want to use an heuristic to approximate\n   * the screen width of the client browser screen width.\n   *\n   * For instance, you could be using the user-agent or the client-hints.\n   * https://caniuse.com/#search=client%20hint\n   */\n  initialWidth: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  lgDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  lgUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  mdDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  mdUp: PropTypes.bool,\n\n  /**\n   * Hide the given breakpoint(s).\n   */\n  only: PropTypes.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']), PropTypes.arrayOf(PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']))]),\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  smDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  smUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  xlDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  xlUp: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and down will be hidden.\n   */\n  xsDown: PropTypes.bool,\n\n  /**\n   * If `true`, screens this size and up will be hidden.\n   */\n  xsUp: PropTypes.bool\n} : void 0;\nexport default Hidden;","/**\n *  Copyright (c) 2014-2015, Facebook, Inc.\n *  All rights reserved.\n *\n *  This source code is licensed under the BSD-style license found in the\n *  LICENSE file in the root directory of this source tree. An additional grant\n *  of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n  function createClass(ctor, superClass) {\n    if (superClass) {\n      ctor.prototype = Object.create(superClass.prototype);\n    }\n    ctor.prototype.constructor = ctor;\n  }\n\n  function Iterable(value) {\n      return isIterable(value) ? value : Seq(value);\n    }\n\n\n  createClass(KeyedIterable, Iterable);\n    function KeyedIterable(value) {\n      return isKeyed(value) ? value : KeyedSeq(value);\n    }\n\n\n  createClass(IndexedIterable, Iterable);\n    function IndexedIterable(value) {\n      return isIndexed(value) ? value : IndexedSeq(value);\n    }\n\n\n  createClass(SetIterable, Iterable);\n    function SetIterable(value) {\n      return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n    }\n\n\n\n  function isIterable(maybeIterable) {\n    return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n  }\n\n  function isKeyed(maybeKeyed) {\n    return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n  }\n\n  function isIndexed(maybeIndexed) {\n    return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n  }\n\n  function isAssociative(maybeAssociative) {\n    return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n  }\n\n  function isOrdered(maybeOrdered) {\n    return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n  }\n\n  Iterable.isIterable = isIterable;\n  Iterable.isKeyed = isKeyed;\n  Iterable.isIndexed = isIndexed;\n  Iterable.isAssociative = isAssociative;\n  Iterable.isOrdered = isOrdered;\n\n  Iterable.Keyed = KeyedIterable;\n  Iterable.Indexed = IndexedIterable;\n  Iterable.Set = SetIterable;\n\n\n  var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  // Used for setting prototype methods that IE8 chokes on.\n  var DELETE = 'delete';\n\n  // Constants describing the size of trie nodes.\n  var SHIFT = 5; // Resulted in best performance after ______?\n  var SIZE = 1 << SHIFT;\n  var MASK = SIZE - 1;\n\n  // A consistent shared value representing \"not set\" which equals nothing other\n  // than itself, and nothing that could be provided externally.\n  var NOT_SET = {};\n\n  // Boolean references, Rough equivalent of `bool &`.\n  var CHANGE_LENGTH = { value: false };\n  var DID_ALTER = { value: false };\n\n  function MakeRef(ref) {\n    ref.value = false;\n    return ref;\n  }\n\n  function SetRef(ref) {\n    ref && (ref.value = true);\n  }\n\n  // A function which returns a value representing an \"owner\" for transient writes\n  // to tries. The return value will only ever equal itself, and will not equal\n  // the return of any subsequent call of this function.\n  function OwnerID() {}\n\n  // http://jsperf.com/copy-array-inline\n  function arrCopy(arr, offset) {\n    offset = offset || 0;\n    var len = Math.max(0, arr.length - offset);\n    var newArr = new Array(len);\n    for (var ii = 0; ii < len; ii++) {\n      newArr[ii] = arr[ii + offset];\n    }\n    return newArr;\n  }\n\n  function ensureSize(iter) {\n    if (iter.size === undefined) {\n      iter.size = iter.__iterate(returnTrue);\n    }\n    return iter.size;\n  }\n\n  function wrapIndex(iter, index) {\n    // This implements \"is array index\" which the ECMAString spec defines as:\n    //\n    //     A String property name P is an array index if and only if\n    //     ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n    //     to 2^32−1.\n    //\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n    if (typeof index !== 'number') {\n      var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n      if ('' + uint32Index !== index || uint32Index === 4294967295) {\n        return NaN;\n      }\n      index = uint32Index;\n    }\n    return index < 0 ? ensureSize(iter) + index : index;\n  }\n\n  function returnTrue() {\n    return true;\n  }\n\n  function wholeSlice(begin, end, size) {\n    return (begin === 0 || (size !== undefined && begin <= -size)) &&\n      (end === undefined || (size !== undefined && end >= size));\n  }\n\n  function resolveBegin(begin, size) {\n    return resolveIndex(begin, size, 0);\n  }\n\n  function resolveEnd(end, size) {\n    return resolveIndex(end, size, size);\n  }\n\n  function resolveIndex(index, size, defaultIndex) {\n    return index === undefined ?\n      defaultIndex :\n      index < 0 ?\n        Math.max(0, size + index) :\n        size === undefined ?\n          index :\n          Math.min(size, index);\n  }\n\n  /* global Symbol */\n\n  var ITERATE_KEYS = 0;\n  var ITERATE_VALUES = 1;\n  var ITERATE_ENTRIES = 2;\n\n  var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n  var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n  function Iterator(next) {\n      this.next = next;\n    }\n\n    Iterator.prototype.toString = function() {\n      return '[Iterator]';\n    };\n\n\n  Iterator.KEYS = ITERATE_KEYS;\n  Iterator.VALUES = ITERATE_VALUES;\n  Iterator.ENTRIES = ITERATE_ENTRIES;\n\n  Iterator.prototype.inspect =\n  Iterator.prototype.toSource = function () { return this.toString(); }\n  Iterator.prototype[ITERATOR_SYMBOL] = function () {\n    return this;\n  };\n\n\n  function iteratorValue(type, k, v, iteratorResult) {\n    var value = type === 0 ? k : type === 1 ? v : [k, v];\n    iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n      value: value, done: false\n    });\n    return iteratorResult;\n  }\n\n  function iteratorDone() {\n    return { value: undefined, done: true };\n  }\n\n  function hasIterator(maybeIterable) {\n    return !!getIteratorFn(maybeIterable);\n  }\n\n  function isIterator(maybeIterator) {\n    return maybeIterator && typeof maybeIterator.next === 'function';\n  }\n\n  function getIterator(iterable) {\n    var iteratorFn = getIteratorFn(iterable);\n    return iteratorFn && iteratorFn.call(iterable);\n  }\n\n  function getIteratorFn(iterable) {\n    var iteratorFn = iterable && (\n      (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n      iterable[FAUX_ITERATOR_SYMBOL]\n    );\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  function isArrayLike(value) {\n    return value && typeof value.length === 'number';\n  }\n\n  createClass(Seq, Iterable);\n    function Seq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        isIterable(value) ? value.toSeq() : seqFromValue(value);\n    }\n\n    Seq.of = function(/*...values*/) {\n      return Seq(arguments);\n    };\n\n    Seq.prototype.toSeq = function() {\n      return this;\n    };\n\n    Seq.prototype.toString = function() {\n      return this.__toString('Seq {', '}');\n    };\n\n    Seq.prototype.cacheResult = function() {\n      if (!this._cache && this.__iterateUncached) {\n        this._cache = this.entrySeq().toArray();\n        this.size = this._cache.length;\n      }\n      return this;\n    };\n\n    // abstract __iterateUncached(fn, reverse)\n\n    Seq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, true);\n    };\n\n    // abstract __iteratorUncached(type, reverse)\n\n    Seq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, true);\n    };\n\n\n\n  createClass(KeyedSeq, Seq);\n    function KeyedSeq(value) {\n      return value === null || value === undefined ?\n        emptySequence().toKeyedSeq() :\n        isIterable(value) ?\n          (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n          keyedSeqFromValue(value);\n    }\n\n    KeyedSeq.prototype.toKeyedSeq = function() {\n      return this;\n    };\n\n\n\n  createClass(IndexedSeq, Seq);\n    function IndexedSeq(value) {\n      return value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n    }\n\n    IndexedSeq.of = function(/*...values*/) {\n      return IndexedSeq(arguments);\n    };\n\n    IndexedSeq.prototype.toIndexedSeq = function() {\n      return this;\n    };\n\n    IndexedSeq.prototype.toString = function() {\n      return this.__toString('Seq [', ']');\n    };\n\n    IndexedSeq.prototype.__iterate = function(fn, reverse) {\n      return seqIterate(this, fn, reverse, false);\n    };\n\n    IndexedSeq.prototype.__iterator = function(type, reverse) {\n      return seqIterator(this, type, reverse, false);\n    };\n\n\n\n  createClass(SetSeq, Seq);\n    function SetSeq(value) {\n      return (\n        value === null || value === undefined ? emptySequence() :\n        !isIterable(value) ? indexedSeqFromValue(value) :\n        isKeyed(value) ? value.entrySeq() : value\n      ).toSetSeq();\n    }\n\n    SetSeq.of = function(/*...values*/) {\n      return SetSeq(arguments);\n    };\n\n    SetSeq.prototype.toSetSeq = function() {\n      return this;\n    };\n\n\n\n  Seq.isSeq = isSeq;\n  Seq.Keyed = KeyedSeq;\n  Seq.Set = SetSeq;\n  Seq.Indexed = IndexedSeq;\n\n  var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n  Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n  createClass(ArraySeq, IndexedSeq);\n    function ArraySeq(array) {\n      this._array = array;\n      this.size = array.length;\n    }\n\n    ArraySeq.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n    };\n\n    ArraySeq.prototype.__iterate = function(fn, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ArraySeq.prototype.__iterator = function(type, reverse) {\n      var array = this._array;\n      var maxIndex = array.length - 1;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n      );\n    };\n\n\n\n  createClass(ObjectSeq, KeyedSeq);\n    function ObjectSeq(object) {\n      var keys = Object.keys(object);\n      this._object = object;\n      this._keys = keys;\n      this.size = keys.length;\n    }\n\n    ObjectSeq.prototype.get = function(key, notSetValue) {\n      if (notSetValue !== undefined && !this.has(key)) {\n        return notSetValue;\n      }\n      return this._object[key];\n    };\n\n    ObjectSeq.prototype.has = function(key) {\n      return this._object.hasOwnProperty(key);\n    };\n\n    ObjectSeq.prototype.__iterate = function(fn, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        if (fn(object[key], key, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    ObjectSeq.prototype.__iterator = function(type, reverse) {\n      var object = this._object;\n      var keys = this._keys;\n      var maxIndex = keys.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var key = keys[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, key, object[key]);\n      });\n    };\n\n  ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(IterableSeq, IndexedSeq);\n    function IterableSeq(iterable) {\n      this._iterable = iterable;\n      this.size = iterable.length || iterable.size;\n    }\n\n    IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      var iterations = 0;\n      if (isIterator(iterator)) {\n        var step;\n        while (!(step = iterator.next()).done) {\n          if (fn(step.value, iterations++, this) === false) {\n            break;\n          }\n        }\n      }\n      return iterations;\n    };\n\n    IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterable = this._iterable;\n      var iterator = getIterator(iterable);\n      if (!isIterator(iterator)) {\n        return new Iterator(iteratorDone);\n      }\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step : iteratorValue(type, iterations++, step.value);\n      });\n    };\n\n\n\n  createClass(IteratorSeq, IndexedSeq);\n    function IteratorSeq(iterator) {\n      this._iterator = iterator;\n      this._iteratorCache = [];\n    }\n\n    IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      while (iterations < cache.length) {\n        if (fn(cache[iterations], iterations++, this) === false) {\n          return iterations;\n        }\n      }\n      var step;\n      while (!(step = iterator.next()).done) {\n        var val = step.value;\n        cache[iterations] = val;\n        if (fn(val, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n\n    IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = this._iterator;\n      var cache = this._iteratorCache;\n      var iterations = 0;\n      return new Iterator(function()  {\n        if (iterations >= cache.length) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          cache[iterations] = step.value;\n        }\n        return iteratorValue(type, iterations, cache[iterations++]);\n      });\n    };\n\n\n\n\n  // # pragma Helper functions\n\n  function isSeq(maybeSeq) {\n    return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n  }\n\n  var EMPTY_SEQ;\n\n  function emptySequence() {\n    return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n  }\n\n  function keyedSeqFromValue(value) {\n    var seq =\n      Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n      isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n      hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n      typeof value === 'object' ? new ObjectSeq(value) :\n      undefined;\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of [k, v] entries, '+\n        'or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function indexedSeqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value);\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function seqFromValue(value) {\n    var seq = maybeIndexedSeqFromValue(value) ||\n      (typeof value === 'object' && new ObjectSeq(value));\n    if (!seq) {\n      throw new TypeError(\n        'Expected Array or iterable object of values, or keyed object: ' + value\n      );\n    }\n    return seq;\n  }\n\n  function maybeIndexedSeqFromValue(value) {\n    return (\n      isArrayLike(value) ? new ArraySeq(value) :\n      isIterator(value) ? new IteratorSeq(value) :\n      hasIterator(value) ? new IterableSeq(value) :\n      undefined\n    );\n  }\n\n  function seqIterate(seq, fn, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    }\n    return seq.__iterateUncached(fn, reverse);\n  }\n\n  function seqIterator(seq, type, reverse, useKeys) {\n    var cache = seq._cache;\n    if (cache) {\n      var maxIndex = cache.length - 1;\n      var ii = 0;\n      return new Iterator(function()  {\n        var entry = cache[reverse ? maxIndex - ii : ii];\n        return ii++ > maxIndex ?\n          iteratorDone() :\n          iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n      });\n    }\n    return seq.__iteratorUncached(type, reverse);\n  }\n\n  function fromJS(json, converter) {\n    return converter ?\n      fromJSWith(converter, json, '', {'': json}) :\n      fromJSDefault(json);\n  }\n\n  function fromJSWith(converter, json, key, parentJSON) {\n    if (Array.isArray(json)) {\n      return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    if (isPlainObj(json)) {\n      return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k)  {return fromJSWith(converter, v, k, json)}));\n    }\n    return json;\n  }\n\n  function fromJSDefault(json) {\n    if (Array.isArray(json)) {\n      return IndexedSeq(json).map(fromJSDefault).toList();\n    }\n    if (isPlainObj(json)) {\n      return KeyedSeq(json).map(fromJSDefault).toMap();\n    }\n    return json;\n  }\n\n  function isPlainObj(value) {\n    return value && (value.constructor === Object || value.constructor === undefined);\n  }\n\n  /**\n   * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n   * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n   *\n   * NaN is considered the same as NaN, however -0 and 0 are considered the same\n   * value, which is different from the algorithm described by\n   * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n   *\n   * This is extended further to allow Objects to describe the values they\n   * represent, by way of `valueOf` or `equals` (and `hashCode`).\n   *\n   * Note: because of this extension, the key equality of Immutable.Map and the\n   * value equality of Immutable.Set will differ from ES6 Map and Set.\n   *\n   * ### Defining custom values\n   *\n   * The easiest way to describe the value an object represents is by implementing\n   * `valueOf`. For example, `Date` represents a value by returning a unix\n   * timestamp for `valueOf`:\n   *\n   *     var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n   *     var date2 = new Date(1234567890000);\n   *     date1.valueOf(); // 1234567890000\n   *     assert( date1 !== date2 );\n   *     assert( Immutable.is( date1, date2 ) );\n   *\n   * Note: overriding `valueOf` may have other implications if you use this object\n   * where JavaScript expects a primitive, such as implicit string coercion.\n   *\n   * For more complex types, especially collections, implementing `valueOf` may\n   * not be performant. An alternative is to implement `equals` and `hashCode`.\n   *\n   * `equals` takes another object, presumably of similar type, and returns true\n   * if the it is equal. Equality is symmetrical, so the same result should be\n   * returned if this and the argument are flipped.\n   *\n   *     assert( a.equals(b) === b.equals(a) );\n   *\n   * `hashCode` returns a 32bit integer number representing the object which will\n   * be used to determine how to store the value object in a Map or Set. You must\n   * provide both or neither methods, one must not exist without the other.\n   *\n   * Also, an important relationship between these methods must be upheld: if two\n   * values are equal, they *must* return the same hashCode. If the values are not\n   * equal, they might have the same hashCode; this is called a hash collision,\n   * and while undesirable for performance reasons, it is acceptable.\n   *\n   *     if (a.equals(b)) {\n   *       assert( a.hashCode() === b.hashCode() );\n   *     }\n   *\n   * All Immutable collections implement `equals` and `hashCode`.\n   *\n   */\n  function is(valueA, valueB) {\n    if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n      return true;\n    }\n    if (!valueA || !valueB) {\n      return false;\n    }\n    if (typeof valueA.valueOf === 'function' &&\n        typeof valueB.valueOf === 'function') {\n      valueA = valueA.valueOf();\n      valueB = valueB.valueOf();\n      if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n        return true;\n      }\n      if (!valueA || !valueB) {\n        return false;\n      }\n    }\n    if (typeof valueA.equals === 'function' &&\n        typeof valueB.equals === 'function' &&\n        valueA.equals(valueB)) {\n      return true;\n    }\n    return false;\n  }\n\n  function deepEqual(a, b) {\n    if (a === b) {\n      return true;\n    }\n\n    if (\n      !isIterable(b) ||\n      a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n      a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n      isKeyed(a) !== isKeyed(b) ||\n      isIndexed(a) !== isIndexed(b) ||\n      isOrdered(a) !== isOrdered(b)\n    ) {\n      return false;\n    }\n\n    if (a.size === 0 && b.size === 0) {\n      return true;\n    }\n\n    var notAssociative = !isAssociative(a);\n\n    if (isOrdered(a)) {\n      var entries = a.entries();\n      return b.every(function(v, k)  {\n        var entry = entries.next().value;\n        return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n      }) && entries.next().done;\n    }\n\n    var flipped = false;\n\n    if (a.size === undefined) {\n      if (b.size === undefined) {\n        if (typeof a.cacheResult === 'function') {\n          a.cacheResult();\n        }\n      } else {\n        flipped = true;\n        var _ = a;\n        a = b;\n        b = _;\n      }\n    }\n\n    var allEqual = true;\n    var bSize = b.__iterate(function(v, k)  {\n      if (notAssociative ? !a.has(v) :\n          flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n        allEqual = false;\n        return false;\n      }\n    });\n\n    return allEqual && a.size === bSize;\n  }\n\n  createClass(Repeat, IndexedSeq);\n\n    function Repeat(value, times) {\n      if (!(this instanceof Repeat)) {\n        return new Repeat(value, times);\n      }\n      this._value = value;\n      this.size = times === undefined ? Infinity : Math.max(0, times);\n      if (this.size === 0) {\n        if (EMPTY_REPEAT) {\n          return EMPTY_REPEAT;\n        }\n        EMPTY_REPEAT = this;\n      }\n    }\n\n    Repeat.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Repeat []';\n      }\n      return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n    };\n\n    Repeat.prototype.get = function(index, notSetValue) {\n      return this.has(index) ? this._value : notSetValue;\n    };\n\n    Repeat.prototype.includes = function(searchValue) {\n      return is(this._value, searchValue);\n    };\n\n    Repeat.prototype.slice = function(begin, end) {\n      var size = this.size;\n      return wholeSlice(begin, end, size) ? this :\n        new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n    };\n\n    Repeat.prototype.reverse = function() {\n      return this;\n    };\n\n    Repeat.prototype.indexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return 0;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.lastIndexOf = function(searchValue) {\n      if (is(this._value, searchValue)) {\n        return this.size;\n      }\n      return -1;\n    };\n\n    Repeat.prototype.__iterate = function(fn, reverse) {\n      for (var ii = 0; ii < this.size; ii++) {\n        if (fn(this._value, ii, this) === false) {\n          return ii + 1;\n        }\n      }\n      return ii;\n    };\n\n    Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      var ii = 0;\n      return new Iterator(function() \n        {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n      );\n    };\n\n    Repeat.prototype.equals = function(other) {\n      return other instanceof Repeat ?\n        is(this._value, other._value) :\n        deepEqual(other);\n    };\n\n\n  var EMPTY_REPEAT;\n\n  function invariant(condition, error) {\n    if (!condition) throw new Error(error);\n  }\n\n  createClass(Range, IndexedSeq);\n\n    function Range(start, end, step) {\n      if (!(this instanceof Range)) {\n        return new Range(start, end, step);\n      }\n      invariant(step !== 0, 'Cannot step a Range by 0');\n      start = start || 0;\n      if (end === undefined) {\n        end = Infinity;\n      }\n      step = step === undefined ? 1 : Math.abs(step);\n      if (end < start) {\n        step = -step;\n      }\n      this._start = start;\n      this._end = end;\n      this._step = step;\n      this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n      if (this.size === 0) {\n        if (EMPTY_RANGE) {\n          return EMPTY_RANGE;\n        }\n        EMPTY_RANGE = this;\n      }\n    }\n\n    Range.prototype.toString = function() {\n      if (this.size === 0) {\n        return 'Range []';\n      }\n      return 'Range [ ' +\n        this._start + '...' + this._end +\n        (this._step > 1 ? ' by ' + this._step : '') +\n      ' ]';\n    };\n\n    Range.prototype.get = function(index, notSetValue) {\n      return this.has(index) ?\n        this._start + wrapIndex(this, index) * this._step :\n        notSetValue;\n    };\n\n    Range.prototype.includes = function(searchValue) {\n      var possibleIndex = (searchValue - this._start) / this._step;\n      return possibleIndex >= 0 &&\n        possibleIndex < this.size &&\n        possibleIndex === Math.floor(possibleIndex);\n    };\n\n    Range.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      begin = resolveBegin(begin, this.size);\n      end = resolveEnd(end, this.size);\n      if (end <= begin) {\n        return new Range(0, 0);\n      }\n      return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n    };\n\n    Range.prototype.indexOf = function(searchValue) {\n      var offsetValue = searchValue - this._start;\n      if (offsetValue % this._step === 0) {\n        var index = offsetValue / this._step;\n        if (index >= 0 && index < this.size) {\n          return index\n        }\n      }\n      return -1;\n    };\n\n    Range.prototype.lastIndexOf = function(searchValue) {\n      return this.indexOf(searchValue);\n    };\n\n    Range.prototype.__iterate = function(fn, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      for (var ii = 0; ii <= maxIndex; ii++) {\n        if (fn(value, ii, this) === false) {\n          return ii + 1;\n        }\n        value += reverse ? -step : step;\n      }\n      return ii;\n    };\n\n    Range.prototype.__iterator = function(type, reverse) {\n      var maxIndex = this.size - 1;\n      var step = this._step;\n      var value = reverse ? this._start + maxIndex * step : this._start;\n      var ii = 0;\n      return new Iterator(function()  {\n        var v = value;\n        value += reverse ? -step : step;\n        return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n      });\n    };\n\n    Range.prototype.equals = function(other) {\n      return other instanceof Range ?\n        this._start === other._start &&\n        this._end === other._end &&\n        this._step === other._step :\n        deepEqual(this, other);\n    };\n\n\n  var EMPTY_RANGE;\n\n  createClass(Collection, Iterable);\n    function Collection() {\n      throw TypeError('Abstract');\n    }\n\n\n  createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n  createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n  createClass(SetCollection, Collection);function SetCollection() {}\n\n\n  Collection.Keyed = KeyedCollection;\n  Collection.Indexed = IndexedCollection;\n  Collection.Set = SetCollection;\n\n  var imul =\n    typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n    Math.imul :\n    function imul(a, b) {\n      a = a | 0; // int\n      b = b | 0; // int\n      var c = a & 0xffff;\n      var d = b & 0xffff;\n      // Shift by 0 fixes the sign on the high part.\n      return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n    };\n\n  // v8 has an optimization for storing 31-bit signed numbers.\n  // Values which have either 00 or 11 as the high order bits qualify.\n  // This function drops the highest order bit in a signed number, maintaining\n  // the sign bit.\n  function smi(i32) {\n    return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n  }\n\n  function hash(o) {\n    if (o === false || o === null || o === undefined) {\n      return 0;\n    }\n    if (typeof o.valueOf === 'function') {\n      o = o.valueOf();\n      if (o === false || o === null || o === undefined) {\n        return 0;\n      }\n    }\n    if (o === true) {\n      return 1;\n    }\n    var type = typeof o;\n    if (type === 'number') {\n      var h = o | 0;\n      if (h !== o) {\n        h ^= o * 0xFFFFFFFF;\n      }\n      while (o > 0xFFFFFFFF) {\n        o /= 0xFFFFFFFF;\n        h ^= o;\n      }\n      return smi(h);\n    }\n    if (type === 'string') {\n      return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n    }\n    if (typeof o.hashCode === 'function') {\n      return o.hashCode();\n    }\n    if (type === 'object') {\n      return hashJSObj(o);\n    }\n    if (typeof o.toString === 'function') {\n      return hashString(o.toString());\n    }\n    throw new Error('Value type ' + type + ' cannot be hashed.');\n  }\n\n  function cachedHashString(string) {\n    var hash = stringHashCache[string];\n    if (hash === undefined) {\n      hash = hashString(string);\n      if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n        STRING_HASH_CACHE_SIZE = 0;\n        stringHashCache = {};\n      }\n      STRING_HASH_CACHE_SIZE++;\n      stringHashCache[string] = hash;\n    }\n    return hash;\n  }\n\n  // http://jsperf.com/hashing-strings\n  function hashString(string) {\n    // This is the hash from JVM\n    // The hash code for a string is computed as\n    // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n    // where s[i] is the ith character of the string and n is the length of\n    // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n    // (exclusive) by dropping high bits.\n    var hash = 0;\n    for (var ii = 0; ii < string.length; ii++) {\n      hash = 31 * hash + string.charCodeAt(ii) | 0;\n    }\n    return smi(hash);\n  }\n\n  function hashJSObj(obj) {\n    var hash;\n    if (usingWeakMap) {\n      hash = weakMap.get(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = obj[UID_HASH_KEY];\n    if (hash !== undefined) {\n      return hash;\n    }\n\n    if (!canDefineProperty) {\n      hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n      if (hash !== undefined) {\n        return hash;\n      }\n\n      hash = getIENodeHash(obj);\n      if (hash !== undefined) {\n        return hash;\n      }\n    }\n\n    hash = ++objHashUID;\n    if (objHashUID & 0x40000000) {\n      objHashUID = 0;\n    }\n\n    if (usingWeakMap) {\n      weakMap.set(obj, hash);\n    } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n      throw new Error('Non-extensible objects are not allowed as keys.');\n    } else if (canDefineProperty) {\n      Object.defineProperty(obj, UID_HASH_KEY, {\n        'enumerable': false,\n        'configurable': false,\n        'writable': false,\n        'value': hash\n      });\n    } else if (obj.propertyIsEnumerable !== undefined &&\n               obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n      // Since we can't define a non-enumerable property on the object\n      // we'll hijack one of the less-used non-enumerable properties to\n      // save our hash on it. Since this is a function it will not show up in\n      // `JSON.stringify` which is what we want.\n      obj.propertyIsEnumerable = function() {\n        return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n      };\n      obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n    } else if (obj.nodeType !== undefined) {\n      // At this point we couldn't get the IE `uniqueID` to use as a hash\n      // and we couldn't use a non-enumerable property to exploit the\n      // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n      // itself.\n      obj[UID_HASH_KEY] = hash;\n    } else {\n      throw new Error('Unable to set a non-enumerable property on object.');\n    }\n\n    return hash;\n  }\n\n  // Get references to ES5 object methods.\n  var isExtensible = Object.isExtensible;\n\n  // True if Object.defineProperty works as expected. IE8 fails this test.\n  var canDefineProperty = (function() {\n    try {\n      Object.defineProperty({}, '@', {});\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }());\n\n  // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n  // and avoid memory leaks from the IE cloneNode bug.\n  function getIENodeHash(node) {\n    if (node && node.nodeType > 0) {\n      switch (node.nodeType) {\n        case 1: // Element\n          return node.uniqueID;\n        case 9: // Document\n          return node.documentElement && node.documentElement.uniqueID;\n      }\n    }\n  }\n\n  // If possible, use a WeakMap.\n  var usingWeakMap = typeof WeakMap === 'function';\n  var weakMap;\n  if (usingWeakMap) {\n    weakMap = new WeakMap();\n  }\n\n  var objHashUID = 0;\n\n  var UID_HASH_KEY = '__immutablehash__';\n  if (typeof Symbol === 'function') {\n    UID_HASH_KEY = Symbol(UID_HASH_KEY);\n  }\n\n  var STRING_HASH_CACHE_MIN_STRLEN = 16;\n  var STRING_HASH_CACHE_MAX_SIZE = 255;\n  var STRING_HASH_CACHE_SIZE = 0;\n  var stringHashCache = {};\n\n  function assertNotInfinite(size) {\n    invariant(\n      size !== Infinity,\n      'Cannot perform this action with an infinite size.'\n    );\n  }\n\n  createClass(Map, KeyedCollection);\n\n    // @pragma Construction\n\n    function Map(value) {\n      return value === null || value === undefined ? emptyMap() :\n        isMap(value) && !isOrdered(value) ? value :\n        emptyMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    Map.prototype.toString = function() {\n      return this.__toString('Map {', '}');\n    };\n\n    // @pragma Access\n\n    Map.prototype.get = function(k, notSetValue) {\n      return this._root ?\n        this._root.get(0, undefined, k, notSetValue) :\n        notSetValue;\n    };\n\n    // @pragma Modification\n\n    Map.prototype.set = function(k, v) {\n      return updateMap(this, k, v);\n    };\n\n    Map.prototype.setIn = function(keyPath, v) {\n      return this.updateIn(keyPath, NOT_SET, function()  {return v});\n    };\n\n    Map.prototype.remove = function(k) {\n      return updateMap(this, k, NOT_SET);\n    };\n\n    Map.prototype.deleteIn = function(keyPath) {\n      return this.updateIn(keyPath, function()  {return NOT_SET});\n    };\n\n    Map.prototype.update = function(k, notSetValue, updater) {\n      return arguments.length === 1 ?\n        k(this) :\n        this.updateIn([k], notSetValue, updater);\n    };\n\n    Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n      if (!updater) {\n        updater = notSetValue;\n        notSetValue = undefined;\n      }\n      var updatedValue = updateInDeepMap(\n        this,\n        forceIterator(keyPath),\n        notSetValue,\n        updater\n      );\n      return updatedValue === NOT_SET ? undefined : updatedValue;\n    };\n\n    Map.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._root = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyMap();\n    };\n\n    // @pragma Composition\n\n    Map.prototype.merge = function(/*...iters*/) {\n      return mergeIntoMapWith(this, undefined, arguments);\n    };\n\n    Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, merger, iters);\n    };\n\n    Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.merge === 'function' ?\n          m.merge.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoMapWith(this, deepMerger, arguments);\n    };\n\n    Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n    };\n\n    Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n      return this.updateIn(\n        keyPath,\n        emptyMap(),\n        function(m ) {return typeof m.mergeDeep === 'function' ?\n          m.mergeDeep.apply(m, iters) :\n          iters[iters.length - 1]}\n      );\n    };\n\n    Map.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator));\n    };\n\n    Map.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedMap(sortFactory(this, comparator, mapper));\n    };\n\n    // @pragma Mutability\n\n    Map.prototype.withMutations = function(fn) {\n      var mutable = this.asMutable();\n      fn(mutable);\n      return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n    };\n\n    Map.prototype.asMutable = function() {\n      return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n    };\n\n    Map.prototype.asImmutable = function() {\n      return this.__ensureOwner();\n    };\n\n    Map.prototype.wasAltered = function() {\n      return this.__altered;\n    };\n\n    Map.prototype.__iterator = function(type, reverse) {\n      return new MapIterator(this, type, reverse);\n    };\n\n    Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      this._root && this._root.iterate(function(entry ) {\n        iterations++;\n        return fn(entry[1], entry[0], this$0);\n      }, reverse);\n      return iterations;\n    };\n\n    Map.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeMap(this.size, this._root, ownerID, this.__hash);\n    };\n\n\n  function isMap(maybeMap) {\n    return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n  }\n\n  Map.isMap = isMap;\n\n  var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n  var MapPrototype = Map.prototype;\n  MapPrototype[IS_MAP_SENTINEL] = true;\n  MapPrototype[DELETE] = MapPrototype.remove;\n  MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n  // #pragma Trie Nodes\n\n\n\n    function ArrayMapNode(ownerID, entries) {\n      this.ownerID = ownerID;\n      this.entries = entries;\n    }\n\n    ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && entries.length === 1) {\n        return; // undefined\n      }\n\n      if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n        return createNodes(ownerID, entries, key, value);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new ArrayMapNode(ownerID, newEntries);\n    };\n\n\n\n\n    function BitmapIndexedNode(ownerID, bitmap, nodes) {\n      this.ownerID = ownerID;\n      this.bitmap = bitmap;\n      this.nodes = nodes;\n    }\n\n    BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n      var bitmap = this.bitmap;\n      return (bitmap & bit) === 0 ? notSetValue :\n        this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n    };\n\n    BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var bit = 1 << keyHashFrag;\n      var bitmap = this.bitmap;\n      var exists = (bitmap & bit) !== 0;\n\n      if (!exists && value === NOT_SET) {\n        return this;\n      }\n\n      var idx = popCount(bitmap & (bit - 1));\n      var nodes = this.nodes;\n      var node = exists ? nodes[idx] : undefined;\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n      if (newNode === node) {\n        return this;\n      }\n\n      if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n        return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n      }\n\n      if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n        return nodes[idx ^ 1];\n      }\n\n      if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n        return newNode;\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n      var newNodes = exists ? newNode ?\n        setIn(nodes, idx, newNode, isEditable) :\n        spliceOut(nodes, idx, isEditable) :\n        spliceIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.bitmap = newBitmap;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n    };\n\n\n\n\n    function HashArrayMapNode(ownerID, count, nodes) {\n      this.ownerID = ownerID;\n      this.count = count;\n      this.nodes = nodes;\n    }\n\n    HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var node = this.nodes[idx];\n      return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n    };\n\n    HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n      var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n      var removed = value === NOT_SET;\n      var nodes = this.nodes;\n      var node = nodes[idx];\n\n      if (removed && !node) {\n        return this;\n      }\n\n      var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n      if (newNode === node) {\n        return this;\n      }\n\n      var newCount = this.count;\n      if (!node) {\n        newCount++;\n      } else if (!newNode) {\n        newCount--;\n        if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n          return packNodes(ownerID, nodes, newCount, idx);\n        }\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n      if (isEditable) {\n        this.count = newCount;\n        this.nodes = newNodes;\n        return this;\n      }\n\n      return new HashArrayMapNode(ownerID, newCount, newNodes);\n    };\n\n\n\n\n    function HashCollisionNode(ownerID, keyHash, entries) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entries = entries;\n    }\n\n    HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      var entries = this.entries;\n      for (var ii = 0, len = entries.length; ii < len; ii++) {\n        if (is(key, entries[ii][0])) {\n          return entries[ii][1];\n        }\n      }\n      return notSetValue;\n    };\n\n    HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      if (keyHash === undefined) {\n        keyHash = hash(key);\n      }\n\n      var removed = value === NOT_SET;\n\n      if (keyHash !== this.keyHash) {\n        if (removed) {\n          return this;\n        }\n        SetRef(didAlter);\n        SetRef(didChangeSize);\n        return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n      }\n\n      var entries = this.entries;\n      var idx = 0;\n      for (var len = entries.length; idx < len; idx++) {\n        if (is(key, entries[idx][0])) {\n          break;\n        }\n      }\n      var exists = idx < len;\n\n      if (exists ? entries[idx][1] === value : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n      (removed || !exists) && SetRef(didChangeSize);\n\n      if (removed && len === 2) {\n        return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n      }\n\n      var isEditable = ownerID && ownerID === this.ownerID;\n      var newEntries = isEditable ? entries : arrCopy(entries);\n\n      if (exists) {\n        if (removed) {\n          idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n        } else {\n          newEntries[idx] = [key, value];\n        }\n      } else {\n        newEntries.push([key, value]);\n      }\n\n      if (isEditable) {\n        this.entries = newEntries;\n        return this;\n      }\n\n      return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n    };\n\n\n\n\n    function ValueNode(ownerID, keyHash, entry) {\n      this.ownerID = ownerID;\n      this.keyHash = keyHash;\n      this.entry = entry;\n    }\n\n    ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n      return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n    };\n\n    ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n      var removed = value === NOT_SET;\n      var keyMatch = is(key, this.entry[0]);\n      if (keyMatch ? value === this.entry[1] : removed) {\n        return this;\n      }\n\n      SetRef(didAlter);\n\n      if (removed) {\n        SetRef(didChangeSize);\n        return; // undefined\n      }\n\n      if (keyMatch) {\n        if (ownerID && ownerID === this.ownerID) {\n          this.entry[1] = value;\n          return this;\n        }\n        return new ValueNode(ownerID, this.keyHash, [key, value]);\n      }\n\n      SetRef(didChangeSize);\n      return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n    };\n\n\n\n  // #pragma Iterators\n\n  ArrayMapNode.prototype.iterate =\n  HashCollisionNode.prototype.iterate = function (fn, reverse) {\n    var entries = this.entries;\n    for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n      if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n        return false;\n      }\n    }\n  }\n\n  BitmapIndexedNode.prototype.iterate =\n  HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n    var nodes = this.nodes;\n    for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n      var node = nodes[reverse ? maxIndex - ii : ii];\n      if (node && node.iterate(fn, reverse) === false) {\n        return false;\n      }\n    }\n  }\n\n  ValueNode.prototype.iterate = function (fn, reverse) {\n    return fn(this.entry);\n  }\n\n  createClass(MapIterator, Iterator);\n\n    function MapIterator(map, type, reverse) {\n      this._type = type;\n      this._reverse = reverse;\n      this._stack = map._root && mapIteratorFrame(map._root);\n    }\n\n    MapIterator.prototype.next = function() {\n      var type = this._type;\n      var stack = this._stack;\n      while (stack) {\n        var node = stack.node;\n        var index = stack.index++;\n        var maxIndex;\n        if (node.entry) {\n          if (index === 0) {\n            return mapIteratorValue(type, node.entry);\n          }\n        } else if (node.entries) {\n          maxIndex = node.entries.length - 1;\n          if (index <= maxIndex) {\n            return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n          }\n        } else {\n          maxIndex = node.nodes.length - 1;\n          if (index <= maxIndex) {\n            var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n            if (subNode) {\n              if (subNode.entry) {\n                return mapIteratorValue(type, subNode.entry);\n              }\n              stack = this._stack = mapIteratorFrame(subNode, stack);\n            }\n            continue;\n          }\n        }\n        stack = this._stack = this._stack.__prev;\n      }\n      return iteratorDone();\n    };\n\n\n  function mapIteratorValue(type, entry) {\n    return iteratorValue(type, entry[0], entry[1]);\n  }\n\n  function mapIteratorFrame(node, prev) {\n    return {\n      node: node,\n      index: 0,\n      __prev: prev\n    };\n  }\n\n  function makeMap(size, root, ownerID, hash) {\n    var map = Object.create(MapPrototype);\n    map.size = size;\n    map._root = root;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_MAP;\n  function emptyMap() {\n    return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n  }\n\n  function updateMap(map, k, v) {\n    var newRoot;\n    var newSize;\n    if (!map._root) {\n      if (v === NOT_SET) {\n        return map;\n      }\n      newSize = 1;\n      newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n    } else {\n      var didChangeSize = MakeRef(CHANGE_LENGTH);\n      var didAlter = MakeRef(DID_ALTER);\n      newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n      if (!didAlter.value) {\n        return map;\n      }\n      newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n    }\n    if (map.__ownerID) {\n      map.size = newSize;\n      map._root = newRoot;\n      map.__hash = undefined;\n      map.__altered = true;\n      return map;\n    }\n    return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n  }\n\n  function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n    if (!node) {\n      if (value === NOT_SET) {\n        return node;\n      }\n      SetRef(didAlter);\n      SetRef(didChangeSize);\n      return new ValueNode(ownerID, keyHash, [key, value]);\n    }\n    return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n  }\n\n  function isLeafNode(node) {\n    return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n  }\n\n  function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n    if (node.keyHash === keyHash) {\n      return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n    }\n\n    var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n    var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n    var newNode;\n    var nodes = idx1 === idx2 ?\n      [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n      ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n    return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n  }\n\n  function createNodes(ownerID, entries, key, value) {\n    if (!ownerID) {\n      ownerID = new OwnerID();\n    }\n    var node = new ValueNode(ownerID, hash(key), [key, value]);\n    for (var ii = 0; ii < entries.length; ii++) {\n      var entry = entries[ii];\n      node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n    }\n    return node;\n  }\n\n  function packNodes(ownerID, nodes, count, excluding) {\n    var bitmap = 0;\n    var packedII = 0;\n    var packedNodes = new Array(count);\n    for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n      var node = nodes[ii];\n      if (node !== undefined && ii !== excluding) {\n        bitmap |= bit;\n        packedNodes[packedII++] = node;\n      }\n    }\n    return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n  }\n\n  function expandNodes(ownerID, nodes, bitmap, including, node) {\n    var count = 0;\n    var expandedNodes = new Array(SIZE);\n    for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n      expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n    }\n    expandedNodes[including] = node;\n    return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n  }\n\n  function mergeIntoMapWith(map, merger, iterables) {\n    var iters = [];\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = KeyedIterable(value);\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    return mergeIntoCollectionWith(map, merger, iters);\n  }\n\n  function deepMerger(existing, value, key) {\n    return existing && existing.mergeDeep && isIterable(value) ?\n      existing.mergeDeep(value) :\n      is(existing, value) ? existing : value;\n  }\n\n  function deepMergerWith(merger) {\n    return function(existing, value, key)  {\n      if (existing && existing.mergeDeepWith && isIterable(value)) {\n        return existing.mergeDeepWith(merger, value);\n      }\n      var nextValue = merger(existing, value, key);\n      return is(existing, nextValue) ? existing : nextValue;\n    };\n  }\n\n  function mergeIntoCollectionWith(collection, merger, iters) {\n    iters = iters.filter(function(x ) {return x.size !== 0});\n    if (iters.length === 0) {\n      return collection;\n    }\n    if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n      return collection.constructor(iters[0]);\n    }\n    return collection.withMutations(function(collection ) {\n      var mergeIntoMap = merger ?\n        function(value, key)  {\n          collection.update(key, NOT_SET, function(existing )\n            {return existing === NOT_SET ? value : merger(existing, value, key)}\n          );\n        } :\n        function(value, key)  {\n          collection.set(key, value);\n        }\n      for (var ii = 0; ii < iters.length; ii++) {\n        iters[ii].forEach(mergeIntoMap);\n      }\n    });\n  }\n\n  function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n    var isNotSet = existing === NOT_SET;\n    var step = keyPathIter.next();\n    if (step.done) {\n      var existingValue = isNotSet ? notSetValue : existing;\n      var newValue = updater(existingValue);\n      return newValue === existingValue ? existing : newValue;\n    }\n    invariant(\n      isNotSet || (existing && existing.set),\n      'invalid keyPath'\n    );\n    var key = step.value;\n    var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n    var nextUpdated = updateInDeepMap(\n      nextExisting,\n      keyPathIter,\n      notSetValue,\n      updater\n    );\n    return nextUpdated === nextExisting ? existing :\n      nextUpdated === NOT_SET ? existing.remove(key) :\n      (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n  }\n\n  function popCount(x) {\n    x = x - ((x >> 1) & 0x55555555);\n    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n    x = (x + (x >> 4)) & 0x0f0f0f0f;\n    x = x + (x >> 8);\n    x = x + (x >> 16);\n    return x & 0x7f;\n  }\n\n  function setIn(array, idx, val, canEdit) {\n    var newArray = canEdit ? array : arrCopy(array);\n    newArray[idx] = val;\n    return newArray;\n  }\n\n  function spliceIn(array, idx, val, canEdit) {\n    var newLen = array.length + 1;\n    if (canEdit && idx + 1 === newLen) {\n      array[idx] = val;\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        newArray[ii] = val;\n        after = -1;\n      } else {\n        newArray[ii] = array[ii + after];\n      }\n    }\n    return newArray;\n  }\n\n  function spliceOut(array, idx, canEdit) {\n    var newLen = array.length - 1;\n    if (canEdit && idx === newLen) {\n      array.pop();\n      return array;\n    }\n    var newArray = new Array(newLen);\n    var after = 0;\n    for (var ii = 0; ii < newLen; ii++) {\n      if (ii === idx) {\n        after = 1;\n      }\n      newArray[ii] = array[ii + after];\n    }\n    return newArray;\n  }\n\n  var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n  var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n  var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n  createClass(List, IndexedCollection);\n\n    // @pragma Construction\n\n    function List(value) {\n      var empty = emptyList();\n      if (value === null || value === undefined) {\n        return empty;\n      }\n      if (isList(value)) {\n        return value;\n      }\n      var iter = IndexedIterable(value);\n      var size = iter.size;\n      if (size === 0) {\n        return empty;\n      }\n      assertNotInfinite(size);\n      if (size > 0 && size < SIZE) {\n        return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n      }\n      return empty.withMutations(function(list ) {\n        list.setSize(size);\n        iter.forEach(function(v, i)  {return list.set(i, v)});\n      });\n    }\n\n    List.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    List.prototype.toString = function() {\n      return this.__toString('List [', ']');\n    };\n\n    // @pragma Access\n\n    List.prototype.get = function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      if (index >= 0 && index < this.size) {\n        index += this._origin;\n        var node = listNodeFor(this, index);\n        return node && node.array[index & MASK];\n      }\n      return notSetValue;\n    };\n\n    // @pragma Modification\n\n    List.prototype.set = function(index, value) {\n      return updateList(this, index, value);\n    };\n\n    List.prototype.remove = function(index) {\n      return !this.has(index) ? this :\n        index === 0 ? this.shift() :\n        index === this.size - 1 ? this.pop() :\n        this.splice(index, 1);\n    };\n\n    List.prototype.insert = function(index, value) {\n      return this.splice(index, 0, value);\n    };\n\n    List.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = this._origin = this._capacity = 0;\n        this._level = SHIFT;\n        this._root = this._tail = null;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyList();\n    };\n\n    List.prototype.push = function(/*...values*/) {\n      var values = arguments;\n      var oldSize = this.size;\n      return this.withMutations(function(list ) {\n        setListBounds(list, 0, oldSize + values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(oldSize + ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.pop = function() {\n      return setListBounds(this, 0, -1);\n    };\n\n    List.prototype.unshift = function(/*...values*/) {\n      var values = arguments;\n      return this.withMutations(function(list ) {\n        setListBounds(list, -values.length);\n        for (var ii = 0; ii < values.length; ii++) {\n          list.set(ii, values[ii]);\n        }\n      });\n    };\n\n    List.prototype.shift = function() {\n      return setListBounds(this, 1);\n    };\n\n    // @pragma Composition\n\n    List.prototype.merge = function(/*...iters*/) {\n      return mergeIntoListWith(this, undefined, arguments);\n    };\n\n    List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, merger, iters);\n    };\n\n    List.prototype.mergeDeep = function(/*...iters*/) {\n      return mergeIntoListWith(this, deepMerger, arguments);\n    };\n\n    List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return mergeIntoListWith(this, deepMergerWith(merger), iters);\n    };\n\n    List.prototype.setSize = function(size) {\n      return setListBounds(this, 0, size);\n    };\n\n    // @pragma Iteration\n\n    List.prototype.slice = function(begin, end) {\n      var size = this.size;\n      if (wholeSlice(begin, end, size)) {\n        return this;\n      }\n      return setListBounds(\n        this,\n        resolveBegin(begin, size),\n        resolveEnd(end, size)\n      );\n    };\n\n    List.prototype.__iterator = function(type, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      return new Iterator(function()  {\n        var value = values();\n        return value === DONE ?\n          iteratorDone() :\n          iteratorValue(type, index++, value);\n      });\n    };\n\n    List.prototype.__iterate = function(fn, reverse) {\n      var index = 0;\n      var values = iterateList(this, reverse);\n      var value;\n      while ((value = values()) !== DONE) {\n        if (fn(value, index++, this) === false) {\n          break;\n        }\n      }\n      return index;\n    };\n\n    List.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        return this;\n      }\n      return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n    };\n\n\n  function isList(maybeList) {\n    return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n  }\n\n  List.isList = isList;\n\n  var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n  var ListPrototype = List.prototype;\n  ListPrototype[IS_LIST_SENTINEL] = true;\n  ListPrototype[DELETE] = ListPrototype.remove;\n  ListPrototype.setIn = MapPrototype.setIn;\n  ListPrototype.deleteIn =\n  ListPrototype.removeIn = MapPrototype.removeIn;\n  ListPrototype.update = MapPrototype.update;\n  ListPrototype.updateIn = MapPrototype.updateIn;\n  ListPrototype.mergeIn = MapPrototype.mergeIn;\n  ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  ListPrototype.withMutations = MapPrototype.withMutations;\n  ListPrototype.asMutable = MapPrototype.asMutable;\n  ListPrototype.asImmutable = MapPrototype.asImmutable;\n  ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n    function VNode(array, ownerID) {\n      this.array = array;\n      this.ownerID = ownerID;\n    }\n\n    // TODO: seems like these methods are very similar\n\n    VNode.prototype.removeBefore = function(ownerID, level, index) {\n      if (index === level ? 1 << level : 0 || this.array.length === 0) {\n        return this;\n      }\n      var originIndex = (index >>> level) & MASK;\n      if (originIndex >= this.array.length) {\n        return new VNode([], ownerID);\n      }\n      var removingFirst = originIndex === 0;\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[originIndex];\n        newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && removingFirst) {\n          return this;\n        }\n      }\n      if (removingFirst && !newChild) {\n        return this;\n      }\n      var editable = editableVNode(this, ownerID);\n      if (!removingFirst) {\n        for (var ii = 0; ii < originIndex; ii++) {\n          editable.array[ii] = undefined;\n        }\n      }\n      if (newChild) {\n        editable.array[originIndex] = newChild;\n      }\n      return editable;\n    };\n\n    VNode.prototype.removeAfter = function(ownerID, level, index) {\n      if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n        return this;\n      }\n      var sizeIndex = ((index - 1) >>> level) & MASK;\n      if (sizeIndex >= this.array.length) {\n        return this;\n      }\n\n      var newChild;\n      if (level > 0) {\n        var oldChild = this.array[sizeIndex];\n        newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n        if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n          return this;\n        }\n      }\n\n      var editable = editableVNode(this, ownerID);\n      editable.array.splice(sizeIndex + 1);\n      if (newChild) {\n        editable.array[sizeIndex] = newChild;\n      }\n      return editable;\n    };\n\n\n\n  var DONE = {};\n\n  function iterateList(list, reverse) {\n    var left = list._origin;\n    var right = list._capacity;\n    var tailPos = getTailOffset(right);\n    var tail = list._tail;\n\n    return iterateNodeOrLeaf(list._root, list._level, 0);\n\n    function iterateNodeOrLeaf(node, level, offset) {\n      return level === 0 ?\n        iterateLeaf(node, offset) :\n        iterateNode(node, level, offset);\n    }\n\n    function iterateLeaf(node, offset) {\n      var array = offset === tailPos ? tail && tail.array : node && node.array;\n      var from = offset > left ? 0 : left - offset;\n      var to = right - offset;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        if (from === to) {\n          return DONE;\n        }\n        var idx = reverse ? --to : from++;\n        return array && array[idx];\n      };\n    }\n\n    function iterateNode(node, level, offset) {\n      var values;\n      var array = node && node.array;\n      var from = offset > left ? 0 : (left - offset) >> level;\n      var to = ((right - offset) >> level) + 1;\n      if (to > SIZE) {\n        to = SIZE;\n      }\n      return function()  {\n        do {\n          if (values) {\n            var value = values();\n            if (value !== DONE) {\n              return value;\n            }\n            values = null;\n          }\n          if (from === to) {\n            return DONE;\n          }\n          var idx = reverse ? --to : from++;\n          values = iterateNodeOrLeaf(\n            array && array[idx], level - SHIFT, offset + (idx << level)\n          );\n        } while (true);\n      };\n    }\n  }\n\n  function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n    var list = Object.create(ListPrototype);\n    list.size = capacity - origin;\n    list._origin = origin;\n    list._capacity = capacity;\n    list._level = level;\n    list._root = root;\n    list._tail = tail;\n    list.__ownerID = ownerID;\n    list.__hash = hash;\n    list.__altered = false;\n    return list;\n  }\n\n  var EMPTY_LIST;\n  function emptyList() {\n    return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n  }\n\n  function updateList(list, index, value) {\n    index = wrapIndex(list, index);\n\n    if (index !== index) {\n      return list;\n    }\n\n    if (index >= list.size || index < 0) {\n      return list.withMutations(function(list ) {\n        index < 0 ?\n          setListBounds(list, index).set(0, value) :\n          setListBounds(list, 0, index + 1).set(index, value)\n      });\n    }\n\n    index += list._origin;\n\n    var newTail = list._tail;\n    var newRoot = list._root;\n    var didAlter = MakeRef(DID_ALTER);\n    if (index >= getTailOffset(list._capacity)) {\n      newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n    } else {\n      newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n    }\n\n    if (!didAlter.value) {\n      return list;\n    }\n\n    if (list.__ownerID) {\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n  }\n\n  function updateVNode(node, ownerID, level, index, value, didAlter) {\n    var idx = (index >>> level) & MASK;\n    var nodeHas = node && idx < node.array.length;\n    if (!nodeHas && value === undefined) {\n      return node;\n    }\n\n    var newNode;\n\n    if (level > 0) {\n      var lowerNode = node && node.array[idx];\n      var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n      if (newLowerNode === lowerNode) {\n        return node;\n      }\n      newNode = editableVNode(node, ownerID);\n      newNode.array[idx] = newLowerNode;\n      return newNode;\n    }\n\n    if (nodeHas && node.array[idx] === value) {\n      return node;\n    }\n\n    SetRef(didAlter);\n\n    newNode = editableVNode(node, ownerID);\n    if (value === undefined && idx === newNode.array.length - 1) {\n      newNode.array.pop();\n    } else {\n      newNode.array[idx] = value;\n    }\n    return newNode;\n  }\n\n  function editableVNode(node, ownerID) {\n    if (ownerID && node && ownerID === node.ownerID) {\n      return node;\n    }\n    return new VNode(node ? node.array.slice() : [], ownerID);\n  }\n\n  function listNodeFor(list, rawIndex) {\n    if (rawIndex >= getTailOffset(list._capacity)) {\n      return list._tail;\n    }\n    if (rawIndex < 1 << (list._level + SHIFT)) {\n      var node = list._root;\n      var level = list._level;\n      while (node && level > 0) {\n        node = node.array[(rawIndex >>> level) & MASK];\n        level -= SHIFT;\n      }\n      return node;\n    }\n  }\n\n  function setListBounds(list, begin, end) {\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      end = end | 0;\n    }\n    var owner = list.__ownerID || new OwnerID();\n    var oldOrigin = list._origin;\n    var oldCapacity = list._capacity;\n    var newOrigin = oldOrigin + begin;\n    var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n    if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n      return list;\n    }\n\n    // If it's going to end after it starts, it's empty.\n    if (newOrigin >= newCapacity) {\n      return list.clear();\n    }\n\n    var newLevel = list._level;\n    var newRoot = list._root;\n\n    // New origin might need creating a higher root.\n    var offsetShift = 0;\n    while (newOrigin + offsetShift < 0) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n      newLevel += SHIFT;\n      offsetShift += 1 << newLevel;\n    }\n    if (offsetShift) {\n      newOrigin += offsetShift;\n      oldOrigin += offsetShift;\n      newCapacity += offsetShift;\n      oldCapacity += offsetShift;\n    }\n\n    var oldTailOffset = getTailOffset(oldCapacity);\n    var newTailOffset = getTailOffset(newCapacity);\n\n    // New size might need creating a higher root.\n    while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n      newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n      newLevel += SHIFT;\n    }\n\n    // Locate or create the new tail.\n    var oldTail = list._tail;\n    var newTail = newTailOffset < oldTailOffset ?\n      listNodeFor(list, newCapacity - 1) :\n      newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n    // Merge Tail into tree.\n    if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n      newRoot = editableVNode(newRoot, owner);\n      var node = newRoot;\n      for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n        var idx = (oldTailOffset >>> level) & MASK;\n        node = node.array[idx] = editableVNode(node.array[idx], owner);\n      }\n      node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n    }\n\n    // If the size has been reduced, there's a chance the tail needs to be trimmed.\n    if (newCapacity < oldCapacity) {\n      newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n    }\n\n    // If the new origin is within the tail, then we do not need a root.\n    if (newOrigin >= newTailOffset) {\n      newOrigin -= newTailOffset;\n      newCapacity -= newTailOffset;\n      newLevel = SHIFT;\n      newRoot = null;\n      newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n    // Otherwise, if the root has been trimmed, garbage collect.\n    } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n      offsetShift = 0;\n\n      // Identify the new top root node of the subtree of the old root.\n      while (newRoot) {\n        var beginIndex = (newOrigin >>> newLevel) & MASK;\n        if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n          break;\n        }\n        if (beginIndex) {\n          offsetShift += (1 << newLevel) * beginIndex;\n        }\n        newLevel -= SHIFT;\n        newRoot = newRoot.array[beginIndex];\n      }\n\n      // Trim the new sides of the new root.\n      if (newRoot && newOrigin > oldOrigin) {\n        newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n      }\n      if (newRoot && newTailOffset < oldTailOffset) {\n        newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n      }\n      if (offsetShift) {\n        newOrigin -= offsetShift;\n        newCapacity -= offsetShift;\n      }\n    }\n\n    if (list.__ownerID) {\n      list.size = newCapacity - newOrigin;\n      list._origin = newOrigin;\n      list._capacity = newCapacity;\n      list._level = newLevel;\n      list._root = newRoot;\n      list._tail = newTail;\n      list.__hash = undefined;\n      list.__altered = true;\n      return list;\n    }\n    return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n  }\n\n  function mergeIntoListWith(list, merger, iterables) {\n    var iters = [];\n    var maxSize = 0;\n    for (var ii = 0; ii < iterables.length; ii++) {\n      var value = iterables[ii];\n      var iter = IndexedIterable(value);\n      if (iter.size > maxSize) {\n        maxSize = iter.size;\n      }\n      if (!isIterable(value)) {\n        iter = iter.map(function(v ) {return fromJS(v)});\n      }\n      iters.push(iter);\n    }\n    if (maxSize > list.size) {\n      list = list.setSize(maxSize);\n    }\n    return mergeIntoCollectionWith(list, merger, iters);\n  }\n\n  function getTailOffset(size) {\n    return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n  }\n\n  createClass(OrderedMap, Map);\n\n    // @pragma Construction\n\n    function OrderedMap(value) {\n      return value === null || value === undefined ? emptyOrderedMap() :\n        isOrderedMap(value) ? value :\n        emptyOrderedMap().withMutations(function(map ) {\n          var iter = KeyedIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v, k)  {return map.set(k, v)});\n        });\n    }\n\n    OrderedMap.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedMap.prototype.toString = function() {\n      return this.__toString('OrderedMap {', '}');\n    };\n\n    // @pragma Access\n\n    OrderedMap.prototype.get = function(k, notSetValue) {\n      var index = this._map.get(k);\n      return index !== undefined ? this._list.get(index)[1] : notSetValue;\n    };\n\n    // @pragma Modification\n\n    OrderedMap.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._map.clear();\n        this._list.clear();\n        return this;\n      }\n      return emptyOrderedMap();\n    };\n\n    OrderedMap.prototype.set = function(k, v) {\n      return updateOrderedMap(this, k, v);\n    };\n\n    OrderedMap.prototype.remove = function(k) {\n      return updateOrderedMap(this, k, NOT_SET);\n    };\n\n    OrderedMap.prototype.wasAltered = function() {\n      return this._map.wasAltered() || this._list.wasAltered();\n    };\n\n    OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._list.__iterate(\n        function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n        reverse\n      );\n    };\n\n    OrderedMap.prototype.__iterator = function(type, reverse) {\n      return this._list.fromEntrySeq().__iterator(type, reverse);\n    };\n\n    OrderedMap.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      var newList = this._list.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        this._list = newList;\n        return this;\n      }\n      return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n    };\n\n\n  function isOrderedMap(maybeOrderedMap) {\n    return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n  }\n\n  OrderedMap.isOrderedMap = isOrderedMap;\n\n  OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n  OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n  function makeOrderedMap(map, list, ownerID, hash) {\n    var omap = Object.create(OrderedMap.prototype);\n    omap.size = map ? map.size : 0;\n    omap._map = map;\n    omap._list = list;\n    omap.__ownerID = ownerID;\n    omap.__hash = hash;\n    return omap;\n  }\n\n  var EMPTY_ORDERED_MAP;\n  function emptyOrderedMap() {\n    return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n  }\n\n  function updateOrderedMap(omap, k, v) {\n    var map = omap._map;\n    var list = omap._list;\n    var i = map.get(k);\n    var has = i !== undefined;\n    var newMap;\n    var newList;\n    if (v === NOT_SET) { // removed\n      if (!has) {\n        return omap;\n      }\n      if (list.size >= SIZE && list.size >= map.size * 2) {\n        newList = list.filter(function(entry, idx)  {return entry !== undefined && i !== idx});\n        newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n        if (omap.__ownerID) {\n          newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n        }\n      } else {\n        newMap = map.remove(k);\n        newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n      }\n    } else {\n      if (has) {\n        if (v === list.get(i)[1]) {\n          return omap;\n        }\n        newMap = map;\n        newList = list.set(i, [k, v]);\n      } else {\n        newMap = map.set(k, list.size);\n        newList = list.set(list.size, [k, v]);\n      }\n    }\n    if (omap.__ownerID) {\n      omap.size = newMap.size;\n      omap._map = newMap;\n      omap._list = newList;\n      omap.__hash = undefined;\n      return omap;\n    }\n    return makeOrderedMap(newMap, newList);\n  }\n\n  createClass(ToKeyedSequence, KeyedSeq);\n    function ToKeyedSequence(indexed, useKeys) {\n      this._iter = indexed;\n      this._useKeys = useKeys;\n      this.size = indexed.size;\n    }\n\n    ToKeyedSequence.prototype.get = function(key, notSetValue) {\n      return this._iter.get(key, notSetValue);\n    };\n\n    ToKeyedSequence.prototype.has = function(key) {\n      return this._iter.has(key);\n    };\n\n    ToKeyedSequence.prototype.valueSeq = function() {\n      return this._iter.valueSeq();\n    };\n\n    ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n      var reversedSequence = reverseFactory(this, true);\n      if (!this._useKeys) {\n        reversedSequence.valueSeq = function()  {return this$0._iter.toSeq().reverse()};\n      }\n      return reversedSequence;\n    };\n\n    ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n      var mappedSequence = mapFactory(this, mapper, context);\n      if (!this._useKeys) {\n        mappedSequence.valueSeq = function()  {return this$0._iter.toSeq().map(mapper, context)};\n      }\n      return mappedSequence;\n    };\n\n    ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var ii;\n      return this._iter.__iterate(\n        this._useKeys ?\n          function(v, k)  {return fn(v, k, this$0)} :\n          ((ii = reverse ? resolveSize(this) : 0),\n            function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n        reverse\n      );\n    };\n\n    ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n      if (this._useKeys) {\n        return this._iter.__iterator(type, reverse);\n      }\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var ii = reverse ? resolveSize(this) : 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n      });\n    };\n\n  ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n  createClass(ToIndexedSequence, IndexedSeq);\n    function ToIndexedSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToIndexedSequence.prototype.includes = function(value) {\n      return this._iter.includes(value);\n    };\n\n    ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n    };\n\n    ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, iterations++, step.value, step)\n      });\n    };\n\n\n\n  createClass(ToSetSequence, SetSeq);\n    function ToSetSequence(iter) {\n      this._iter = iter;\n      this.size = iter.size;\n    }\n\n    ToSetSequence.prototype.has = function(key) {\n      return this._iter.includes(key);\n    };\n\n    ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n    };\n\n    ToSetSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        return step.done ? step :\n          iteratorValue(type, step.value, step.value, step);\n      });\n    };\n\n\n\n  createClass(FromEntriesSequence, KeyedSeq);\n    function FromEntriesSequence(entries) {\n      this._iter = entries;\n      this.size = entries.size;\n    }\n\n    FromEntriesSequence.prototype.entrySeq = function() {\n      return this._iter.toSeq();\n    };\n\n    FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._iter.__iterate(function(entry ) {\n        // Check if entry exists first so array access doesn't throw for holes\n        // in the parent iteration.\n        if (entry) {\n          validateEntry(entry);\n          var indexedIterable = isIterable(entry);\n          return fn(\n            indexedIterable ? entry.get(1) : entry[1],\n            indexedIterable ? entry.get(0) : entry[0],\n            this$0\n          );\n        }\n      }, reverse);\n    };\n\n    FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n      var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          // Check if entry exists first so array access doesn't throw for holes\n          // in the parent iteration.\n          if (entry) {\n            validateEntry(entry);\n            var indexedIterable = isIterable(entry);\n            return iteratorValue(\n              type,\n              indexedIterable ? entry.get(0) : entry[0],\n              indexedIterable ? entry.get(1) : entry[1],\n              step\n            );\n          }\n        }\n      });\n    };\n\n\n  ToIndexedSequence.prototype.cacheResult =\n  ToKeyedSequence.prototype.cacheResult =\n  ToSetSequence.prototype.cacheResult =\n  FromEntriesSequence.prototype.cacheResult =\n    cacheResultThrough;\n\n\n  function flipFactory(iterable) {\n    var flipSequence = makeSequence(iterable);\n    flipSequence._iter = iterable;\n    flipSequence.size = iterable.size;\n    flipSequence.flip = function()  {return iterable};\n    flipSequence.reverse = function () {\n      var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n      reversedSequence.flip = function()  {return iterable.reverse()};\n      return reversedSequence;\n    };\n    flipSequence.has = function(key ) {return iterable.includes(key)};\n    flipSequence.includes = function(key ) {return iterable.has(key)};\n    flipSequence.cacheResult = cacheResultThrough;\n    flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(k, v, this$0) !== false}, reverse);\n    }\n    flipSequence.__iteratorUncached = function(type, reverse) {\n      if (type === ITERATE_ENTRIES) {\n        var iterator = iterable.__iterator(type, reverse);\n        return new Iterator(function()  {\n          var step = iterator.next();\n          if (!step.done) {\n            var k = step.value[0];\n            step.value[0] = step.value[1];\n            step.value[1] = k;\n          }\n          return step;\n        });\n      }\n      return iterable.__iterator(\n        type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n        reverse\n      );\n    }\n    return flipSequence;\n  }\n\n\n  function mapFactory(iterable, mapper, context) {\n    var mappedSequence = makeSequence(iterable);\n    mappedSequence.size = iterable.size;\n    mappedSequence.has = function(key ) {return iterable.has(key)};\n    mappedSequence.get = function(key, notSetValue)  {\n      var v = iterable.get(key, NOT_SET);\n      return v === NOT_SET ?\n        notSetValue :\n        mapper.call(context, v, key, iterable);\n    };\n    mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(\n        function(v, k, c)  {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n        reverse\n      );\n    }\n    mappedSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      return new Iterator(function()  {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var key = entry[0];\n        return iteratorValue(\n          type,\n          key,\n          mapper.call(context, entry[1], key, iterable),\n          step\n        );\n      });\n    }\n    return mappedSequence;\n  }\n\n\n  function reverseFactory(iterable, useKeys) {\n    var reversedSequence = makeSequence(iterable);\n    reversedSequence._iter = iterable;\n    reversedSequence.size = iterable.size;\n    reversedSequence.reverse = function()  {return iterable};\n    if (iterable.flip) {\n      reversedSequence.flip = function () {\n        var flipSequence = flipFactory(iterable);\n        flipSequence.reverse = function()  {return iterable.flip()};\n        return flipSequence;\n      };\n    }\n    reversedSequence.get = function(key, notSetValue) \n      {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n    reversedSequence.has = function(key )\n      {return iterable.has(useKeys ? key : -1 - key)};\n    reversedSequence.includes = function(value ) {return iterable.includes(value)};\n    reversedSequence.cacheResult = cacheResultThrough;\n    reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n      return iterable.__iterate(function(v, k)  {return fn(v, k, this$0)}, !reverse);\n    };\n    reversedSequence.__iterator =\n      function(type, reverse)  {return iterable.__iterator(type, !reverse)};\n    return reversedSequence;\n  }\n\n\n  function filterFactory(iterable, predicate, context, useKeys) {\n    var filterSequence = makeSequence(iterable);\n    if (useKeys) {\n      filterSequence.has = function(key ) {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n      };\n      filterSequence.get = function(key, notSetValue)  {\n        var v = iterable.get(key, NOT_SET);\n        return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n          v : notSetValue;\n      };\n    }\n    filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      }, reverse);\n      return iterations;\n    };\n    filterSequence.__iteratorUncached = function (type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (true) {\n          var step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n          var entry = step.value;\n          var key = entry[0];\n          var value = entry[1];\n          if (predicate.call(context, value, key, iterable)) {\n            return iteratorValue(type, useKeys ? key : iterations++, value, step);\n          }\n        }\n      });\n    }\n    return filterSequence;\n  }\n\n\n  function countByFactory(iterable, grouper, context) {\n    var groups = Map().asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        0,\n        function(a ) {return a + 1}\n      );\n    });\n    return groups.asImmutable();\n  }\n\n\n  function groupByFactory(iterable, grouper, context) {\n    var isKeyedIter = isKeyed(iterable);\n    var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n    iterable.__iterate(function(v, k)  {\n      groups.update(\n        grouper.call(context, v, k, iterable),\n        function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n      );\n    });\n    var coerce = iterableClass(iterable);\n    return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n  }\n\n\n  function sliceFactory(iterable, begin, end, useKeys) {\n    var originalSize = iterable.size;\n\n    // Sanitize begin & end using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    if (begin !== undefined) {\n      begin = begin | 0;\n    }\n    if (end !== undefined) {\n      end = end | 0;\n    }\n\n    if (wholeSlice(begin, end, originalSize)) {\n      return iterable;\n    }\n\n    var resolvedBegin = resolveBegin(begin, originalSize);\n    var resolvedEnd = resolveEnd(end, originalSize);\n\n    // begin or end will be NaN if they were provided as negative numbers and\n    // this iterable's size is unknown. In that case, cache first so there is\n    // a known size and these do not resolve to NaN.\n    if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n      return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n    }\n\n    // Note: resolvedEnd is undefined when the original sequence's length is\n    // unknown and this slice did not supply an end and should contain all\n    // elements after resolvedBegin.\n    // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n    var resolvedSize = resolvedEnd - resolvedBegin;\n    var sliceSize;\n    if (resolvedSize === resolvedSize) {\n      sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n    }\n\n    var sliceSeq = makeSequence(iterable);\n\n    // If iterable.size is undefined, the size of the realized sliceSeq is\n    // unknown at this point unless the number of items to slice is 0\n    sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n    if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n      sliceSeq.get = function (index, notSetValue) {\n        index = wrapIndex(this, index);\n        return index >= 0 && index < sliceSize ?\n          iterable.get(index + resolvedBegin, notSetValue) :\n          notSetValue;\n      }\n    }\n\n    sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (sliceSize === 0) {\n        return 0;\n      }\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var skipped = 0;\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k)  {\n        if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n                 iterations !== sliceSize;\n        }\n      });\n      return iterations;\n    };\n\n    sliceSeq.__iteratorUncached = function(type, reverse) {\n      if (sliceSize !== 0 && reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      // Don't bother instantiating parent iterator if taking 0.\n      var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n      var skipped = 0;\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (skipped++ < resolvedBegin) {\n          iterator.next();\n        }\n        if (++iterations > sliceSize) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (useKeys || type === ITERATE_VALUES) {\n          return step;\n        } else if (type === ITERATE_KEYS) {\n          return iteratorValue(type, iterations - 1, undefined, step);\n        } else {\n          return iteratorValue(type, iterations - 1, step.value[1], step);\n        }\n      });\n    }\n\n    return sliceSeq;\n  }\n\n\n  function takeWhileFactory(iterable, predicate, context) {\n    var takeSequence = makeSequence(iterable);\n    takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c) \n        {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n      );\n      return iterations;\n    };\n    takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var iterating = true;\n      return new Iterator(function()  {\n        if (!iterating) {\n          return iteratorDone();\n        }\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var k = entry[0];\n        var v = entry[1];\n        if (!predicate.call(context, v, k, this$0)) {\n          iterating = false;\n          return iteratorDone();\n        }\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return takeSequence;\n  }\n\n\n  function skipWhileFactory(iterable, predicate, context, useKeys) {\n    var skipSequence = makeSequence(iterable);\n    skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterate(fn, reverse);\n      }\n      var isSkipping = true;\n      var iterations = 0;\n      iterable.__iterate(function(v, k, c)  {\n        if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n          iterations++;\n          return fn(v, useKeys ? k : iterations - 1, this$0);\n        }\n      });\n      return iterations;\n    };\n    skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n      if (reverse) {\n        return this.cacheResult().__iterator(type, reverse);\n      }\n      var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n      var skipping = true;\n      var iterations = 0;\n      return new Iterator(function()  {\n        var step, k, v;\n        do {\n          step = iterator.next();\n          if (step.done) {\n            if (useKeys || type === ITERATE_VALUES) {\n              return step;\n            } else if (type === ITERATE_KEYS) {\n              return iteratorValue(type, iterations++, undefined, step);\n            } else {\n              return iteratorValue(type, iterations++, step.value[1], step);\n            }\n          }\n          var entry = step.value;\n          k = entry[0];\n          v = entry[1];\n          skipping && (skipping = predicate.call(context, v, k, this$0));\n        } while (skipping);\n        return type === ITERATE_ENTRIES ? step :\n          iteratorValue(type, k, v, step);\n      });\n    };\n    return skipSequence;\n  }\n\n\n  function concatFactory(iterable, values) {\n    var isKeyedIterable = isKeyed(iterable);\n    var iters = [iterable].concat(values).map(function(v ) {\n      if (!isIterable(v)) {\n        v = isKeyedIterable ?\n          keyedSeqFromValue(v) :\n          indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n      } else if (isKeyedIterable) {\n        v = KeyedIterable(v);\n      }\n      return v;\n    }).filter(function(v ) {return v.size !== 0});\n\n    if (iters.length === 0) {\n      return iterable;\n    }\n\n    if (iters.length === 1) {\n      var singleton = iters[0];\n      if (singleton === iterable ||\n          isKeyedIterable && isKeyed(singleton) ||\n          isIndexed(iterable) && isIndexed(singleton)) {\n        return singleton;\n      }\n    }\n\n    var concatSeq = new ArraySeq(iters);\n    if (isKeyedIterable) {\n      concatSeq = concatSeq.toKeyedSeq();\n    } else if (!isIndexed(iterable)) {\n      concatSeq = concatSeq.toSetSeq();\n    }\n    concatSeq = concatSeq.flatten(true);\n    concatSeq.size = iters.reduce(\n      function(sum, seq)  {\n        if (sum !== undefined) {\n          var size = seq.size;\n          if (size !== undefined) {\n            return sum + size;\n          }\n        }\n      },\n      0\n    );\n    return concatSeq;\n  }\n\n\n  function flattenFactory(iterable, depth, useKeys) {\n    var flatSequence = makeSequence(iterable);\n    flatSequence.__iterateUncached = function(fn, reverse) {\n      var iterations = 0;\n      var stopped = false;\n      function flatDeep(iter, currentDepth) {var this$0 = this;\n        iter.__iterate(function(v, k)  {\n          if ((!depth || currentDepth < depth) && isIterable(v)) {\n            flatDeep(v, currentDepth + 1);\n          } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n            stopped = true;\n          }\n          return !stopped;\n        }, reverse);\n      }\n      flatDeep(iterable, 0);\n      return iterations;\n    }\n    flatSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(type, reverse);\n      var stack = [];\n      var iterations = 0;\n      return new Iterator(function()  {\n        while (iterator) {\n          var step = iterator.next();\n          if (step.done !== false) {\n            iterator = stack.pop();\n            continue;\n          }\n          var v = step.value;\n          if (type === ITERATE_ENTRIES) {\n            v = v[1];\n          }\n          if ((!depth || stack.length < depth) && isIterable(v)) {\n            stack.push(iterator);\n            iterator = v.__iterator(type, reverse);\n          } else {\n            return useKeys ? step : iteratorValue(type, iterations++, v, step);\n          }\n        }\n        return iteratorDone();\n      });\n    }\n    return flatSequence;\n  }\n\n\n  function flatMapFactory(iterable, mapper, context) {\n    var coerce = iterableClass(iterable);\n    return iterable.toSeq().map(\n      function(v, k)  {return coerce(mapper.call(context, v, k, iterable))}\n    ).flatten(true);\n  }\n\n\n  function interposeFactory(iterable, separator) {\n    var interposedSequence = makeSequence(iterable);\n    interposedSequence.size = iterable.size && iterable.size * 2 -1;\n    interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n      var iterations = 0;\n      iterable.__iterate(function(v, k) \n        {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n        fn(v, iterations++, this$0) !== false},\n        reverse\n      );\n      return iterations;\n    };\n    interposedSequence.__iteratorUncached = function(type, reverse) {\n      var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n      var iterations = 0;\n      var step;\n      return new Iterator(function()  {\n        if (!step || iterations % 2) {\n          step = iterator.next();\n          if (step.done) {\n            return step;\n          }\n        }\n        return iterations % 2 ?\n          iteratorValue(type, iterations++, separator) :\n          iteratorValue(type, iterations++, step.value, step);\n      });\n    };\n    return interposedSequence;\n  }\n\n\n  function sortFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    var isKeyedIterable = isKeyed(iterable);\n    var index = 0;\n    var entries = iterable.toSeq().map(\n      function(v, k)  {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n    ).toArray();\n    entries.sort(function(a, b)  {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n      isKeyedIterable ?\n      function(v, i)  { entries[i].length = 2; } :\n      function(v, i)  { entries[i] = v[1]; }\n    );\n    return isKeyedIterable ? KeyedSeq(entries) :\n      isIndexed(iterable) ? IndexedSeq(entries) :\n      SetSeq(entries);\n  }\n\n\n  function maxFactory(iterable, comparator, mapper) {\n    if (!comparator) {\n      comparator = defaultComparator;\n    }\n    if (mapper) {\n      var entry = iterable.toSeq()\n        .map(function(v, k)  {return [v, mapper(v, k, iterable)]})\n        .reduce(function(a, b)  {return maxCompare(comparator, a[1], b[1]) ? b : a});\n      return entry && entry[0];\n    } else {\n      return iterable.reduce(function(a, b)  {return maxCompare(comparator, a, b) ? b : a});\n    }\n  }\n\n  function maxCompare(comparator, a, b) {\n    var comp = comparator(b, a);\n    // b is considered the new max if the comparator declares them equal, but\n    // they are not equal and b is in fact a nullish value.\n    return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n  }\n\n\n  function zipWithFactory(keyIter, zipper, iters) {\n    var zipSequence = makeSequence(keyIter);\n    zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n    // Note: this a generic base implementation of __iterate in terms of\n    // __iterator which may be more generically useful in the future.\n    zipSequence.__iterate = function(fn, reverse) {\n      /* generic:\n      var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        iterations++;\n        if (fn(step.value[1], step.value[0], this) === false) {\n          break;\n        }\n      }\n      return iterations;\n      */\n      // indexed:\n      var iterator = this.__iterator(ITERATE_VALUES, reverse);\n      var step;\n      var iterations = 0;\n      while (!(step = iterator.next()).done) {\n        if (fn(step.value, iterations++, this) === false) {\n          break;\n        }\n      }\n      return iterations;\n    };\n    zipSequence.__iteratorUncached = function(type, reverse) {\n      var iterators = iters.map(function(i )\n        {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n      );\n      var iterations = 0;\n      var isDone = false;\n      return new Iterator(function()  {\n        var steps;\n        if (!isDone) {\n          steps = iterators.map(function(i ) {return i.next()});\n          isDone = steps.some(function(s ) {return s.done});\n        }\n        if (isDone) {\n          return iteratorDone();\n        }\n        return iteratorValue(\n          type,\n          iterations++,\n          zipper.apply(null, steps.map(function(s ) {return s.value}))\n        );\n      });\n    };\n    return zipSequence\n  }\n\n\n  // #pragma Helper Functions\n\n  function reify(iter, seq) {\n    return isSeq(iter) ? seq : iter.constructor(seq);\n  }\n\n  function validateEntry(entry) {\n    if (entry !== Object(entry)) {\n      throw new TypeError('Expected [K, V] tuple: ' + entry);\n    }\n  }\n\n  function resolveSize(iter) {\n    assertNotInfinite(iter.size);\n    return ensureSize(iter);\n  }\n\n  function iterableClass(iterable) {\n    return isKeyed(iterable) ? KeyedIterable :\n      isIndexed(iterable) ? IndexedIterable :\n      SetIterable;\n  }\n\n  function makeSequence(iterable) {\n    return Object.create(\n      (\n        isKeyed(iterable) ? KeyedSeq :\n        isIndexed(iterable) ? IndexedSeq :\n        SetSeq\n      ).prototype\n    );\n  }\n\n  function cacheResultThrough() {\n    if (this._iter.cacheResult) {\n      this._iter.cacheResult();\n      this.size = this._iter.size;\n      return this;\n    } else {\n      return Seq.prototype.cacheResult.call(this);\n    }\n  }\n\n  function defaultComparator(a, b) {\n    return a > b ? 1 : a < b ? -1 : 0;\n  }\n\n  function forceIterator(keyPath) {\n    var iter = getIterator(keyPath);\n    if (!iter) {\n      // Array might not be iterable in this environment, so we need a fallback\n      // to our wrapped type.\n      if (!isArrayLike(keyPath)) {\n        throw new TypeError('Expected iterable or array-like: ' + keyPath);\n      }\n      iter = getIterator(Iterable(keyPath));\n    }\n    return iter;\n  }\n\n  createClass(Record, KeyedCollection);\n\n    function Record(defaultValues, name) {\n      var hasInitialized;\n\n      var RecordType = function Record(values) {\n        if (values instanceof RecordType) {\n          return values;\n        }\n        if (!(this instanceof RecordType)) {\n          return new RecordType(values);\n        }\n        if (!hasInitialized) {\n          hasInitialized = true;\n          var keys = Object.keys(defaultValues);\n          setProps(RecordTypePrototype, keys);\n          RecordTypePrototype.size = keys.length;\n          RecordTypePrototype._name = name;\n          RecordTypePrototype._keys = keys;\n          RecordTypePrototype._defaultValues = defaultValues;\n        }\n        this._map = Map(values);\n      };\n\n      var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n      RecordTypePrototype.constructor = RecordType;\n\n      return RecordType;\n    }\n\n    Record.prototype.toString = function() {\n      return this.__toString(recordName(this) + ' {', '}');\n    };\n\n    // @pragma Access\n\n    Record.prototype.has = function(k) {\n      return this._defaultValues.hasOwnProperty(k);\n    };\n\n    Record.prototype.get = function(k, notSetValue) {\n      if (!this.has(k)) {\n        return notSetValue;\n      }\n      var defaultVal = this._defaultValues[k];\n      return this._map ? this._map.get(k, defaultVal) : defaultVal;\n    };\n\n    // @pragma Modification\n\n    Record.prototype.clear = function() {\n      if (this.__ownerID) {\n        this._map && this._map.clear();\n        return this;\n      }\n      var RecordType = this.constructor;\n      return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n    };\n\n    Record.prototype.set = function(k, v) {\n      if (!this.has(k)) {\n        throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n      }\n      var newMap = this._map && this._map.set(k, v);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.remove = function(k) {\n      if (!this.has(k)) {\n        return this;\n      }\n      var newMap = this._map && this._map.remove(k);\n      if (this.__ownerID || newMap === this._map) {\n        return this;\n      }\n      return makeRecord(this, newMap);\n    };\n\n    Record.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterator(type, reverse);\n    };\n\n    Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return KeyedIterable(this._defaultValues).map(function(_, k)  {return this$0.get(k)}).__iterate(fn, reverse);\n    };\n\n    Record.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map && this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return makeRecord(this, newMap, ownerID);\n    };\n\n\n  var RecordPrototype = Record.prototype;\n  RecordPrototype[DELETE] = RecordPrototype.remove;\n  RecordPrototype.deleteIn =\n  RecordPrototype.removeIn = MapPrototype.removeIn;\n  RecordPrototype.merge = MapPrototype.merge;\n  RecordPrototype.mergeWith = MapPrototype.mergeWith;\n  RecordPrototype.mergeIn = MapPrototype.mergeIn;\n  RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n  RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n  RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n  RecordPrototype.setIn = MapPrototype.setIn;\n  RecordPrototype.update = MapPrototype.update;\n  RecordPrototype.updateIn = MapPrototype.updateIn;\n  RecordPrototype.withMutations = MapPrototype.withMutations;\n  RecordPrototype.asMutable = MapPrototype.asMutable;\n  RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n  function makeRecord(likeRecord, map, ownerID) {\n    var record = Object.create(Object.getPrototypeOf(likeRecord));\n    record._map = map;\n    record.__ownerID = ownerID;\n    return record;\n  }\n\n  function recordName(record) {\n    return record._name || record.constructor.name || 'Record';\n  }\n\n  function setProps(prototype, names) {\n    try {\n      names.forEach(setProp.bind(undefined, prototype));\n    } catch (error) {\n      // Object.defineProperty failed. Probably IE8.\n    }\n  }\n\n  function setProp(prototype, name) {\n    Object.defineProperty(prototype, name, {\n      get: function() {\n        return this.get(name);\n      },\n      set: function(value) {\n        invariant(this.__ownerID, 'Cannot set on an immutable record.');\n        this.set(name, value);\n      }\n    });\n  }\n\n  createClass(Set, SetCollection);\n\n    // @pragma Construction\n\n    function Set(value) {\n      return value === null || value === undefined ? emptySet() :\n        isSet(value) && !isOrdered(value) ? value :\n        emptySet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    Set.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Set.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    Set.prototype.toString = function() {\n      return this.__toString('Set {', '}');\n    };\n\n    // @pragma Access\n\n    Set.prototype.has = function(value) {\n      return this._map.has(value);\n    };\n\n    // @pragma Modification\n\n    Set.prototype.add = function(value) {\n      return updateSet(this, this._map.set(value, true));\n    };\n\n    Set.prototype.remove = function(value) {\n      return updateSet(this, this._map.remove(value));\n    };\n\n    Set.prototype.clear = function() {\n      return updateSet(this, this._map.clear());\n    };\n\n    // @pragma Composition\n\n    Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n      iters = iters.filter(function(x ) {return x.size !== 0});\n      if (iters.length === 0) {\n        return this;\n      }\n      if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n        return this.constructor(iters[0]);\n      }\n      return this.withMutations(function(set ) {\n        for (var ii = 0; ii < iters.length; ii++) {\n          SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n        }\n      });\n    };\n\n    Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (!iters.every(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n      if (iters.length === 0) {\n        return this;\n      }\n      iters = iters.map(function(iter ) {return SetIterable(iter)});\n      var originalSet = this;\n      return this.withMutations(function(set ) {\n        originalSet.forEach(function(value ) {\n          if (iters.some(function(iter ) {return iter.includes(value)})) {\n            set.remove(value);\n          }\n        });\n      });\n    };\n\n    Set.prototype.merge = function() {\n      return this.union.apply(this, arguments);\n    };\n\n    Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n      return this.union.apply(this, iters);\n    };\n\n    Set.prototype.sort = function(comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator));\n    };\n\n    Set.prototype.sortBy = function(mapper, comparator) {\n      // Late binding\n      return OrderedSet(sortFactory(this, comparator, mapper));\n    };\n\n    Set.prototype.wasAltered = function() {\n      return this._map.wasAltered();\n    };\n\n    Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n      return this._map.__iterate(function(_, k)  {return fn(k, k, this$0)}, reverse);\n    };\n\n    Set.prototype.__iterator = function(type, reverse) {\n      return this._map.map(function(_, k)  {return k}).__iterator(type, reverse);\n    };\n\n    Set.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      var newMap = this._map.__ensureOwner(ownerID);\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this._map = newMap;\n        return this;\n      }\n      return this.__make(newMap, ownerID);\n    };\n\n\n  function isSet(maybeSet) {\n    return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n  }\n\n  Set.isSet = isSet;\n\n  var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n  var SetPrototype = Set.prototype;\n  SetPrototype[IS_SET_SENTINEL] = true;\n  SetPrototype[DELETE] = SetPrototype.remove;\n  SetPrototype.mergeDeep = SetPrototype.merge;\n  SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n  SetPrototype.withMutations = MapPrototype.withMutations;\n  SetPrototype.asMutable = MapPrototype.asMutable;\n  SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n  SetPrototype.__empty = emptySet;\n  SetPrototype.__make = makeSet;\n\n  function updateSet(set, newMap) {\n    if (set.__ownerID) {\n      set.size = newMap.size;\n      set._map = newMap;\n      return set;\n    }\n    return newMap === set._map ? set :\n      newMap.size === 0 ? set.__empty() :\n      set.__make(newMap);\n  }\n\n  function makeSet(map, ownerID) {\n    var set = Object.create(SetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_SET;\n  function emptySet() {\n    return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n  }\n\n  createClass(OrderedSet, Set);\n\n    // @pragma Construction\n\n    function OrderedSet(value) {\n      return value === null || value === undefined ? emptyOrderedSet() :\n        isOrderedSet(value) ? value :\n        emptyOrderedSet().withMutations(function(set ) {\n          var iter = SetIterable(value);\n          assertNotInfinite(iter.size);\n          iter.forEach(function(v ) {return set.add(v)});\n        });\n    }\n\n    OrderedSet.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    OrderedSet.fromKeys = function(value) {\n      return this(KeyedIterable(value).keySeq());\n    };\n\n    OrderedSet.prototype.toString = function() {\n      return this.__toString('OrderedSet {', '}');\n    };\n\n\n  function isOrderedSet(maybeOrderedSet) {\n    return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n  }\n\n  OrderedSet.isOrderedSet = isOrderedSet;\n\n  var OrderedSetPrototype = OrderedSet.prototype;\n  OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n  OrderedSetPrototype.__empty = emptyOrderedSet;\n  OrderedSetPrototype.__make = makeOrderedSet;\n\n  function makeOrderedSet(map, ownerID) {\n    var set = Object.create(OrderedSetPrototype);\n    set.size = map ? map.size : 0;\n    set._map = map;\n    set.__ownerID = ownerID;\n    return set;\n  }\n\n  var EMPTY_ORDERED_SET;\n  function emptyOrderedSet() {\n    return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n  }\n\n  createClass(Stack, IndexedCollection);\n\n    // @pragma Construction\n\n    function Stack(value) {\n      return value === null || value === undefined ? emptyStack() :\n        isStack(value) ? value :\n        emptyStack().unshiftAll(value);\n    }\n\n    Stack.of = function(/*...values*/) {\n      return this(arguments);\n    };\n\n    Stack.prototype.toString = function() {\n      return this.__toString('Stack [', ']');\n    };\n\n    // @pragma Access\n\n    Stack.prototype.get = function(index, notSetValue) {\n      var head = this._head;\n      index = wrapIndex(this, index);\n      while (head && index--) {\n        head = head.next;\n      }\n      return head ? head.value : notSetValue;\n    };\n\n    Stack.prototype.peek = function() {\n      return this._head && this._head.value;\n    };\n\n    // @pragma Modification\n\n    Stack.prototype.push = function(/*...values*/) {\n      if (arguments.length === 0) {\n        return this;\n      }\n      var newSize = this.size + arguments.length;\n      var head = this._head;\n      for (var ii = arguments.length - 1; ii >= 0; ii--) {\n        head = {\n          value: arguments[ii],\n          next: head\n        };\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pushAll = function(iter) {\n      iter = IndexedIterable(iter);\n      if (iter.size === 0) {\n        return this;\n      }\n      assertNotInfinite(iter.size);\n      var newSize = this.size;\n      var head = this._head;\n      iter.reverse().forEach(function(value ) {\n        newSize++;\n        head = {\n          value: value,\n          next: head\n        };\n      });\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    Stack.prototype.pop = function() {\n      return this.slice(1);\n    };\n\n    Stack.prototype.unshift = function(/*...values*/) {\n      return this.push.apply(this, arguments);\n    };\n\n    Stack.prototype.unshiftAll = function(iter) {\n      return this.pushAll(iter);\n    };\n\n    Stack.prototype.shift = function() {\n      return this.pop.apply(this, arguments);\n    };\n\n    Stack.prototype.clear = function() {\n      if (this.size === 0) {\n        return this;\n      }\n      if (this.__ownerID) {\n        this.size = 0;\n        this._head = undefined;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return emptyStack();\n    };\n\n    Stack.prototype.slice = function(begin, end) {\n      if (wholeSlice(begin, end, this.size)) {\n        return this;\n      }\n      var resolvedBegin = resolveBegin(begin, this.size);\n      var resolvedEnd = resolveEnd(end, this.size);\n      if (resolvedEnd !== this.size) {\n        // super.slice(begin, end);\n        return IndexedCollection.prototype.slice.call(this, begin, end);\n      }\n      var newSize = this.size - resolvedBegin;\n      var head = this._head;\n      while (resolvedBegin--) {\n        head = head.next;\n      }\n      if (this.__ownerID) {\n        this.size = newSize;\n        this._head = head;\n        this.__hash = undefined;\n        this.__altered = true;\n        return this;\n      }\n      return makeStack(newSize, head);\n    };\n\n    // @pragma Mutability\n\n    Stack.prototype.__ensureOwner = function(ownerID) {\n      if (ownerID === this.__ownerID) {\n        return this;\n      }\n      if (!ownerID) {\n        this.__ownerID = ownerID;\n        this.__altered = false;\n        return this;\n      }\n      return makeStack(this.size, this._head, ownerID, this.__hash);\n    };\n\n    // @pragma Iteration\n\n    Stack.prototype.__iterate = function(fn, reverse) {\n      if (reverse) {\n        return this.reverse().__iterate(fn);\n      }\n      var iterations = 0;\n      var node = this._head;\n      while (node) {\n        if (fn(node.value, iterations++, this) === false) {\n          break;\n        }\n        node = node.next;\n      }\n      return iterations;\n    };\n\n    Stack.prototype.__iterator = function(type, reverse) {\n      if (reverse) {\n        return this.reverse().__iterator(type);\n      }\n      var iterations = 0;\n      var node = this._head;\n      return new Iterator(function()  {\n        if (node) {\n          var value = node.value;\n          node = node.next;\n          return iteratorValue(type, iterations++, value);\n        }\n        return iteratorDone();\n      });\n    };\n\n\n  function isStack(maybeStack) {\n    return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n  }\n\n  Stack.isStack = isStack;\n\n  var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n  var StackPrototype = Stack.prototype;\n  StackPrototype[IS_STACK_SENTINEL] = true;\n  StackPrototype.withMutations = MapPrototype.withMutations;\n  StackPrototype.asMutable = MapPrototype.asMutable;\n  StackPrototype.asImmutable = MapPrototype.asImmutable;\n  StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n  function makeStack(size, head, ownerID, hash) {\n    var map = Object.create(StackPrototype);\n    map.size = size;\n    map._head = head;\n    map.__ownerID = ownerID;\n    map.__hash = hash;\n    map.__altered = false;\n    return map;\n  }\n\n  var EMPTY_STACK;\n  function emptyStack() {\n    return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n  }\n\n  /**\n   * Contributes additional methods to a constructor\n   */\n  function mixin(ctor, methods) {\n    var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n    Object.keys(methods).forEach(keyCopier);\n    Object.getOwnPropertySymbols &&\n      Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n    return ctor;\n  }\n\n  Iterable.Iterator = Iterator;\n\n  mixin(Iterable, {\n\n    // ### Conversion to other types\n\n    toArray: function() {\n      assertNotInfinite(this.size);\n      var array = new Array(this.size || 0);\n      this.valueSeq().__iterate(function(v, i)  { array[i] = v; });\n      return array;\n    },\n\n    toIndexedSeq: function() {\n      return new ToIndexedSequence(this);\n    },\n\n    toJS: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n      ).__toJS();\n    },\n\n    toJSON: function() {\n      return this.toSeq().map(\n        function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n      ).__toJS();\n    },\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, true);\n    },\n\n    toMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Map(this.toKeyedSeq());\n    },\n\n    toObject: function() {\n      assertNotInfinite(this.size);\n      var object = {};\n      this.__iterate(function(v, k)  { object[k] = v; });\n      return object;\n    },\n\n    toOrderedMap: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedMap(this.toKeyedSeq());\n    },\n\n    toOrderedSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSet: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Set(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toSetSeq: function() {\n      return new ToSetSequence(this);\n    },\n\n    toSeq: function() {\n      return isIndexed(this) ? this.toIndexedSeq() :\n        isKeyed(this) ? this.toKeyedSeq() :\n        this.toSetSeq();\n    },\n\n    toStack: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return Stack(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n    toList: function() {\n      // Use Late Binding here to solve the circular dependency.\n      return List(isKeyed(this) ? this.valueSeq() : this);\n    },\n\n\n    // ### Common JavaScript methods and properties\n\n    toString: function() {\n      return '[Iterable]';\n    },\n\n    __toString: function(head, tail) {\n      if (this.size === 0) {\n        return head + tail;\n      }\n      return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    concat: function() {var values = SLICE$0.call(arguments, 0);\n      return reify(this, concatFactory(this, values));\n    },\n\n    includes: function(searchValue) {\n      return this.some(function(value ) {return is(value, searchValue)});\n    },\n\n    entries: function() {\n      return this.__iterator(ITERATE_ENTRIES);\n    },\n\n    every: function(predicate, context) {\n      assertNotInfinite(this.size);\n      var returnValue = true;\n      this.__iterate(function(v, k, c)  {\n        if (!predicate.call(context, v, k, c)) {\n          returnValue = false;\n          return false;\n        }\n      });\n      return returnValue;\n    },\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, true));\n    },\n\n    find: function(predicate, context, notSetValue) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[1] : notSetValue;\n    },\n\n    findEntry: function(predicate, context) {\n      var found;\n      this.__iterate(function(v, k, c)  {\n        if (predicate.call(context, v, k, c)) {\n          found = [k, v];\n          return false;\n        }\n      });\n      return found;\n    },\n\n    findLastEntry: function(predicate, context) {\n      return this.toSeq().reverse().findEntry(predicate, context);\n    },\n\n    forEach: function(sideEffect, context) {\n      assertNotInfinite(this.size);\n      return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n    },\n\n    join: function(separator) {\n      assertNotInfinite(this.size);\n      separator = separator !== undefined ? '' + separator : ',';\n      var joined = '';\n      var isFirst = true;\n      this.__iterate(function(v ) {\n        isFirst ? (isFirst = false) : (joined += separator);\n        joined += v !== null && v !== undefined ? v.toString() : '';\n      });\n      return joined;\n    },\n\n    keys: function() {\n      return this.__iterator(ITERATE_KEYS);\n    },\n\n    map: function(mapper, context) {\n      return reify(this, mapFactory(this, mapper, context));\n    },\n\n    reduce: function(reducer, initialReduction, context) {\n      assertNotInfinite(this.size);\n      var reduction;\n      var useFirst;\n      if (arguments.length < 2) {\n        useFirst = true;\n      } else {\n        reduction = initialReduction;\n      }\n      this.__iterate(function(v, k, c)  {\n        if (useFirst) {\n          useFirst = false;\n          reduction = v;\n        } else {\n          reduction = reducer.call(context, reduction, v, k, c);\n        }\n      });\n      return reduction;\n    },\n\n    reduceRight: function(reducer, initialReduction, context) {\n      var reversed = this.toKeyedSeq().reverse();\n      return reversed.reduce.apply(reversed, arguments);\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, true));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, true));\n    },\n\n    some: function(predicate, context) {\n      return !this.every(not(predicate), context);\n    },\n\n    sort: function(comparator) {\n      return reify(this, sortFactory(this, comparator));\n    },\n\n    values: function() {\n      return this.__iterator(ITERATE_VALUES);\n    },\n\n\n    // ### More sequential methods\n\n    butLast: function() {\n      return this.slice(0, -1);\n    },\n\n    isEmpty: function() {\n      return this.size !== undefined ? this.size === 0 : !this.some(function()  {return true});\n    },\n\n    count: function(predicate, context) {\n      return ensureSize(\n        predicate ? this.toSeq().filter(predicate, context) : this\n      );\n    },\n\n    countBy: function(grouper, context) {\n      return countByFactory(this, grouper, context);\n    },\n\n    equals: function(other) {\n      return deepEqual(this, other);\n    },\n\n    entrySeq: function() {\n      var iterable = this;\n      if (iterable._cache) {\n        // We cache as an entries array, so we can just return the cache!\n        return new ArraySeq(iterable._cache);\n      }\n      var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n      entriesSequence.fromEntrySeq = function()  {return iterable.toSeq()};\n      return entriesSequence;\n    },\n\n    filterNot: function(predicate, context) {\n      return this.filter(not(predicate), context);\n    },\n\n    findLast: function(predicate, context, notSetValue) {\n      return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n    },\n\n    first: function() {\n      return this.find(returnTrue);\n    },\n\n    flatMap: function(mapper, context) {\n      return reify(this, flatMapFactory(this, mapper, context));\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, true));\n    },\n\n    fromEntrySeq: function() {\n      return new FromEntriesSequence(this);\n    },\n\n    get: function(searchKey, notSetValue) {\n      return this.find(function(_, key)  {return is(key, searchKey)}, undefined, notSetValue);\n    },\n\n    getIn: function(searchKeyPath, notSetValue) {\n      var nested = this;\n      // Note: in an ES6 environment, we would prefer:\n      // for (var key of searchKeyPath) {\n      var iter = forceIterator(searchKeyPath);\n      var step;\n      while (!(step = iter.next()).done) {\n        var key = step.value;\n        nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n        if (nested === NOT_SET) {\n          return notSetValue;\n        }\n      }\n      return nested;\n    },\n\n    groupBy: function(grouper, context) {\n      return groupByFactory(this, grouper, context);\n    },\n\n    has: function(searchKey) {\n      return this.get(searchKey, NOT_SET) !== NOT_SET;\n    },\n\n    hasIn: function(searchKeyPath) {\n      return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n    },\n\n    isSubset: function(iter) {\n      iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n      return this.every(function(value ) {return iter.includes(value)});\n    },\n\n    isSuperset: function(iter) {\n      iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n      return iter.isSubset(this);\n    },\n\n    keySeq: function() {\n      return this.toSeq().map(keyMapper).toIndexedSeq();\n    },\n\n    last: function() {\n      return this.toSeq().reverse().first();\n    },\n\n    max: function(comparator) {\n      return maxFactory(this, comparator);\n    },\n\n    maxBy: function(mapper, comparator) {\n      return maxFactory(this, comparator, mapper);\n    },\n\n    min: function(comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n    },\n\n    minBy: function(mapper, comparator) {\n      return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n    },\n\n    rest: function() {\n      return this.slice(1);\n    },\n\n    skip: function(amount) {\n      return this.slice(Math.max(0, amount));\n    },\n\n    skipLast: function(amount) {\n      return reify(this, this.toSeq().reverse().skip(amount).reverse());\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, true));\n    },\n\n    skipUntil: function(predicate, context) {\n      return this.skipWhile(not(predicate), context);\n    },\n\n    sortBy: function(mapper, comparator) {\n      return reify(this, sortFactory(this, comparator, mapper));\n    },\n\n    take: function(amount) {\n      return this.slice(0, Math.max(0, amount));\n    },\n\n    takeLast: function(amount) {\n      return reify(this, this.toSeq().reverse().take(amount).reverse());\n    },\n\n    takeWhile: function(predicate, context) {\n      return reify(this, takeWhileFactory(this, predicate, context));\n    },\n\n    takeUntil: function(predicate, context) {\n      return this.takeWhile(not(predicate), context);\n    },\n\n    valueSeq: function() {\n      return this.toIndexedSeq();\n    },\n\n\n    // ### Hashable Object\n\n    hashCode: function() {\n      return this.__hash || (this.__hash = hashIterable(this));\n    }\n\n\n    // ### Internal\n\n    // abstract __iterate(fn, reverse)\n\n    // abstract __iterator(type, reverse)\n  });\n\n  // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n  // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n  // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n  // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n  var IterablePrototype = Iterable.prototype;\n  IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n  IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n  IterablePrototype.__toJS = IterablePrototype.toArray;\n  IterablePrototype.__toStringMapper = quoteString;\n  IterablePrototype.inspect =\n  IterablePrototype.toSource = function() { return this.toString(); };\n  IterablePrototype.chain = IterablePrototype.flatMap;\n  IterablePrototype.contains = IterablePrototype.includes;\n\n  // Temporary warning about using length\n  (function () {\n    try {\n      Object.defineProperty(IterablePrototype, 'length', {\n        get: function () {\n          if (!Iterable.noLengthWarning) {\n            var stack;\n            try {\n              throw new Error();\n            } catch (error) {\n              stack = error.stack;\n            }\n            if (stack.indexOf('_wrapObject') === -1) {\n              console && console.warn && console.warn(\n                'iterable.length has been deprecated, '+\n                'use iterable.size or iterable.count(). '+\n                'This warning will become a silent error in a future version. ' +\n                stack\n              );\n              return this.size;\n            }\n          }\n        }\n      });\n    } catch (e) {}\n  })();\n\n\n\n  mixin(KeyedIterable, {\n\n    // ### More sequential methods\n\n    flip: function() {\n      return reify(this, flipFactory(this));\n    },\n\n    findKey: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry && entry[0];\n    },\n\n    findLastKey: function(predicate, context) {\n      return this.toSeq().reverse().findKey(predicate, context);\n    },\n\n    keyOf: function(searchValue) {\n      return this.findKey(function(value ) {return is(value, searchValue)});\n    },\n\n    lastKeyOf: function(searchValue) {\n      return this.findLastKey(function(value ) {return is(value, searchValue)});\n    },\n\n    mapEntries: function(mapper, context) {var this$0 = this;\n      var iterations = 0;\n      return reify(this,\n        this.toSeq().map(\n          function(v, k)  {return mapper.call(context, [k, v], iterations++, this$0)}\n        ).fromEntrySeq()\n      );\n    },\n\n    mapKeys: function(mapper, context) {var this$0 = this;\n      return reify(this,\n        this.toSeq().flip().map(\n          function(k, v)  {return mapper.call(context, k, v, this$0)}\n        ).flip()\n      );\n    }\n\n  });\n\n  var KeyedIterablePrototype = KeyedIterable.prototype;\n  KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n  KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n  KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n  KeyedIterablePrototype.__toStringMapper = function(v, k)  {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n  mixin(IndexedIterable, {\n\n    // ### Conversion to other types\n\n    toKeyedSeq: function() {\n      return new ToKeyedSequence(this, false);\n    },\n\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    filter: function(predicate, context) {\n      return reify(this, filterFactory(this, predicate, context, false));\n    },\n\n    findIndex: function(predicate, context) {\n      var entry = this.findEntry(predicate, context);\n      return entry ? entry[0] : -1;\n    },\n\n    indexOf: function(searchValue) {\n      var key = this.toKeyedSeq().keyOf(searchValue);\n      return key === undefined ? -1 : key;\n    },\n\n    lastIndexOf: function(searchValue) {\n      var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n      return key === undefined ? -1 : key;\n\n      // var index =\n      // return this.toSeq().reverse().indexOf(searchValue);\n    },\n\n    reverse: function() {\n      return reify(this, reverseFactory(this, false));\n    },\n\n    slice: function(begin, end) {\n      return reify(this, sliceFactory(this, begin, end, false));\n    },\n\n    splice: function(index, removeNum /*, ...values*/) {\n      var numArgs = arguments.length;\n      removeNum = Math.max(removeNum | 0, 0);\n      if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n        return this;\n      }\n      // If index is negative, it should resolve relative to the size of the\n      // collection. However size may be expensive to compute if not cached, so\n      // only call count() if the number is in fact negative.\n      index = resolveBegin(index, index < 0 ? this.count() : this.size);\n      var spliced = this.slice(0, index);\n      return reify(\n        this,\n        numArgs === 1 ?\n          spliced :\n          spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n      );\n    },\n\n\n    // ### More collection methods\n\n    findLastIndex: function(predicate, context) {\n      var key = this.toKeyedSeq().findLastKey(predicate, context);\n      return key === undefined ? -1 : key;\n    },\n\n    first: function() {\n      return this.get(0);\n    },\n\n    flatten: function(depth) {\n      return reify(this, flattenFactory(this, depth, false));\n    },\n\n    get: function(index, notSetValue) {\n      index = wrapIndex(this, index);\n      return (index < 0 || (this.size === Infinity ||\n          (this.size !== undefined && index > this.size))) ?\n        notSetValue :\n        this.find(function(_, key)  {return key === index}, undefined, notSetValue);\n    },\n\n    has: function(index) {\n      index = wrapIndex(this, index);\n      return index >= 0 && (this.size !== undefined ?\n        this.size === Infinity || index < this.size :\n        this.indexOf(index) !== -1\n      );\n    },\n\n    interpose: function(separator) {\n      return reify(this, interposeFactory(this, separator));\n    },\n\n    interleave: function(/*...iterables*/) {\n      var iterables = [this].concat(arrCopy(arguments));\n      var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n      var interleaved = zipped.flatten(true);\n      if (zipped.size) {\n        interleaved.size = zipped.size * iterables.length;\n      }\n      return reify(this, interleaved);\n    },\n\n    last: function() {\n      return this.get(-1);\n    },\n\n    skipWhile: function(predicate, context) {\n      return reify(this, skipWhileFactory(this, predicate, context, false));\n    },\n\n    zip: function(/*, ...iterables */) {\n      var iterables = [this].concat(arrCopy(arguments));\n      return reify(this, zipWithFactory(this, defaultZipper, iterables));\n    },\n\n    zipWith: function(zipper/*, ...iterables */) {\n      var iterables = arrCopy(arguments);\n      iterables[0] = this;\n      return reify(this, zipWithFactory(this, zipper, iterables));\n    }\n\n  });\n\n  IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n  IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n  mixin(SetIterable, {\n\n    // ### ES6 Collection methods (ES6 Array and Map)\n\n    get: function(value, notSetValue) {\n      return this.has(value) ? value : notSetValue;\n    },\n\n    includes: function(value) {\n      return this.has(value);\n    },\n\n\n    // ### More sequential methods\n\n    keySeq: function() {\n      return this.valueSeq();\n    }\n\n  });\n\n  SetIterable.prototype.has = IterablePrototype.includes;\n\n\n  // Mixin subclasses\n\n  mixin(KeyedSeq, KeyedIterable.prototype);\n  mixin(IndexedSeq, IndexedIterable.prototype);\n  mixin(SetSeq, SetIterable.prototype);\n\n  mixin(KeyedCollection, KeyedIterable.prototype);\n  mixin(IndexedCollection, IndexedIterable.prototype);\n  mixin(SetCollection, SetIterable.prototype);\n\n\n  // #pragma Helper functions\n\n  function keyMapper(v, k) {\n    return k;\n  }\n\n  function entryMapper(v, k) {\n    return [k, v];\n  }\n\n  function not(predicate) {\n    return function() {\n      return !predicate.apply(this, arguments);\n    }\n  }\n\n  function neg(predicate) {\n    return function() {\n      return -predicate.apply(this, arguments);\n    }\n  }\n\n  function quoteString(value) {\n    return typeof value === 'string' ? JSON.stringify(value) : value;\n  }\n\n  function defaultZipper() {\n    return arrCopy(arguments);\n  }\n\n  function defaultNegComparator(a, b) {\n    return a < b ? 1 : a > b ? -1 : 0;\n  }\n\n  function hashIterable(iterable) {\n    if (iterable.size === Infinity) {\n      return 0;\n    }\n    var ordered = isOrdered(iterable);\n    var keyed = isKeyed(iterable);\n    var h = ordered ? 1 : 0;\n    var size = iterable.__iterate(\n      keyed ?\n        ordered ?\n          function(v, k)  { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n          function(v, k)  { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n        ordered ?\n          function(v ) { h = 31 * h + hash(v) | 0; } :\n          function(v ) { h = h + hash(v) | 0; }\n    );\n    return murmurHashOfSize(size, h);\n  }\n\n  function murmurHashOfSize(size, h) {\n    h = imul(h, 0xCC9E2D51);\n    h = imul(h << 15 | h >>> -15, 0x1B873593);\n    h = imul(h << 13 | h >>> -13, 5);\n    h = (h + 0xE6546B64 | 0) ^ size;\n    h = imul(h ^ h >>> 16, 0x85EBCA6B);\n    h = imul(h ^ h >>> 13, 0xC2B2AE35);\n    h = smi(h ^ h >>> 16);\n    return h;\n  }\n\n  function hashMerge(a, b) {\n    return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n  }\n\n  var Immutable = {\n\n    Iterable: Iterable,\n\n    Seq: Seq,\n    Collection: Collection,\n    Map: Map,\n    OrderedMap: OrderedMap,\n    List: List,\n    Stack: Stack,\n    Set: Set,\n    OrderedSet: OrderedSet,\n\n    Record: Record,\n    Range: Range,\n    Repeat: Repeat,\n\n    is: is,\n    fromJS: fromJS\n\n  };\n\n  return Immutable;\n\n}));","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n  if (format === undefined) {\n    throw new Error('invariant(...): Second argument must be a string.');\n  }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return String(args[argIndex++]);\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // Skip invariant's own stack frame.\n\n    throw error;\n  }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockTree = require(\"./BlockTree\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar EditorBidiService = require(\"./EditorBidiService\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedSet = Immutable.OrderedSet,\n    Record = Immutable.Record,\n    Stack = Immutable.Stack,\n    OrderedMap = Immutable.OrderedMap,\n    List = Immutable.List; // When configuring an editor, the user can chose to provide or not provide\n// basically all keys. `currentContent` varies, so this type doesn't include it.\n// (See the types defined below.)\n\nvar defaultRecord = {\n  allowUndo: true,\n  currentContent: null,\n  decorator: null,\n  directionMap: null,\n  forceSelection: false,\n  inCompositionMode: false,\n  inlineStyleOverride: null,\n  lastChangeType: null,\n  nativelyRenderedContent: null,\n  redoStack: Stack(),\n  selection: null,\n  treeMap: null,\n  undoStack: Stack()\n};\nvar EditorStateRecord = Record(defaultRecord);\n\nvar EditorState = /*#__PURE__*/function () {\n  EditorState.createEmpty = function createEmpty(decorator) {\n    return this.createWithText('', decorator);\n  };\n\n  EditorState.createWithText = function createWithText(text, decorator) {\n    return EditorState.createWithContent(ContentState.createFromText(text), decorator);\n  };\n\n  EditorState.createWithContent = function createWithContent(contentState, decorator) {\n    if (contentState.getBlockMap().count() === 0) {\n      return EditorState.createEmpty(decorator);\n    }\n\n    var firstKey = contentState.getBlockMap().first().getKey();\n    return EditorState.create({\n      currentContent: contentState,\n      undoStack: Stack(),\n      redoStack: Stack(),\n      decorator: decorator || null,\n      selection: SelectionState.createEmpty(firstKey)\n    });\n  };\n\n  EditorState.create = function create(config) {\n    var currentContent = config.currentContent,\n        decorator = config.decorator;\n\n    var recordConfig = _objectSpread({}, config, {\n      treeMap: generateNewTreeMap(currentContent, decorator),\n      directionMap: EditorBidiService.getDirectionMap(currentContent)\n    });\n\n    return new EditorState(new EditorStateRecord(recordConfig));\n  };\n\n  EditorState.fromJS = function fromJS(config) {\n    return new EditorState(new EditorStateRecord(_objectSpread({}, config, {\n      directionMap: config.directionMap != null ? OrderedMap(config.directionMap) : config.directionMap,\n      inlineStyleOverride: config.inlineStyleOverride != null ? OrderedSet(config.inlineStyleOverride) : config.inlineStyleOverride,\n      nativelyRenderedContent: config.nativelyRenderedContent != null ? ContentState.fromJS(config.nativelyRenderedContent) : config.nativelyRenderedContent,\n      redoStack: config.redoStack != null ? Stack(config.redoStack.map(function (v) {\n        return ContentState.fromJS(v);\n      })) : config.redoStack,\n      selection: config.selection != null ? new SelectionState(config.selection) : config.selection,\n      treeMap: config.treeMap != null ? OrderedMap(config.treeMap).map(function (v) {\n        return List(v).map(function (v) {\n          return BlockTree.fromJS(v);\n        });\n      }) : config.treeMap,\n      undoStack: config.undoStack != null ? Stack(config.undoStack.map(function (v) {\n        return ContentState.fromJS(v);\n      })) : config.undoStack,\n      currentContent: ContentState.fromJS(config.currentContent)\n    })));\n  };\n\n  EditorState.set = function set(editorState, put) {\n    var map = editorState.getImmutable().withMutations(function (state) {\n      var existingDecorator = state.get('decorator');\n      var decorator = existingDecorator;\n\n      if (put.decorator === null) {\n        decorator = null;\n      } else if (put.decorator) {\n        decorator = put.decorator;\n      }\n\n      var newContent = put.currentContent || editorState.getCurrentContent();\n\n      if (decorator !== existingDecorator) {\n        var treeMap = state.get('treeMap');\n        var newTreeMap;\n\n        if (decorator && existingDecorator) {\n          newTreeMap = regenerateTreeForNewDecorator(newContent, newContent.getBlockMap(), treeMap, decorator, existingDecorator);\n        } else {\n          newTreeMap = generateNewTreeMap(newContent, decorator);\n        }\n\n        state.merge({\n          decorator: decorator,\n          treeMap: newTreeMap,\n          nativelyRenderedContent: null\n        });\n        return;\n      }\n\n      var existingContent = editorState.getCurrentContent();\n\n      if (newContent !== existingContent) {\n        state.set('treeMap', regenerateTreeForNewBlocks(editorState, newContent.getBlockMap(), newContent.getEntityMap(), decorator));\n      }\n\n      state.merge(put);\n    });\n    return new EditorState(map);\n  };\n\n  var _proto = EditorState.prototype;\n\n  _proto.toJS = function toJS() {\n    return this.getImmutable().toJS();\n  };\n\n  _proto.getAllowUndo = function getAllowUndo() {\n    return this.getImmutable().get('allowUndo');\n  };\n\n  _proto.getCurrentContent = function getCurrentContent() {\n    return this.getImmutable().get('currentContent');\n  };\n\n  _proto.getUndoStack = function getUndoStack() {\n    return this.getImmutable().get('undoStack');\n  };\n\n  _proto.getRedoStack = function getRedoStack() {\n    return this.getImmutable().get('redoStack');\n  };\n\n  _proto.getSelection = function getSelection() {\n    return this.getImmutable().get('selection');\n  };\n\n  _proto.getDecorator = function getDecorator() {\n    return this.getImmutable().get('decorator');\n  };\n\n  _proto.isInCompositionMode = function isInCompositionMode() {\n    return this.getImmutable().get('inCompositionMode');\n  };\n\n  _proto.mustForceSelection = function mustForceSelection() {\n    return this.getImmutable().get('forceSelection');\n  };\n\n  _proto.getNativelyRenderedContent = function getNativelyRenderedContent() {\n    return this.getImmutable().get('nativelyRenderedContent');\n  };\n\n  _proto.getLastChangeType = function getLastChangeType() {\n    return this.getImmutable().get('lastChangeType');\n  }\n  /**\n   * While editing, the user may apply inline style commands with a collapsed\n   * cursor, intending to type text that adopts the specified style. In this\n   * case, we track the specified style as an \"override\" that takes precedence\n   * over the inline style of the text adjacent to the cursor.\n   *\n   * If null, there is no override in place.\n   */\n  ;\n\n  _proto.getInlineStyleOverride = function getInlineStyleOverride() {\n    return this.getImmutable().get('inlineStyleOverride');\n  };\n\n  EditorState.setInlineStyleOverride = function setInlineStyleOverride(editorState, inlineStyleOverride) {\n    return EditorState.set(editorState, {\n      inlineStyleOverride: inlineStyleOverride\n    });\n  }\n  /**\n   * Get the appropriate inline style for the editor state. If an\n   * override is in place, use it. Otherwise, the current style is\n   * based on the location of the selection state.\n   */\n  ;\n\n  _proto.getCurrentInlineStyle = function getCurrentInlineStyle() {\n    var override = this.getInlineStyleOverride();\n\n    if (override != null) {\n      return override;\n    }\n\n    var content = this.getCurrentContent();\n    var selection = this.getSelection();\n\n    if (selection.isCollapsed()) {\n      return getInlineStyleForCollapsedSelection(content, selection);\n    }\n\n    return getInlineStyleForNonCollapsedSelection(content, selection);\n  };\n\n  _proto.getBlockTree = function getBlockTree(blockKey) {\n    return this.getImmutable().getIn(['treeMap', blockKey]);\n  };\n\n  _proto.isSelectionAtStartOfContent = function isSelectionAtStartOfContent() {\n    var firstKey = this.getCurrentContent().getBlockMap().first().getKey();\n    return this.getSelection().hasEdgeWithin(firstKey, 0, 0);\n  };\n\n  _proto.isSelectionAtEndOfContent = function isSelectionAtEndOfContent() {\n    var content = this.getCurrentContent();\n    var blockMap = content.getBlockMap();\n    var last = blockMap.last();\n    var end = last.getLength();\n    return this.getSelection().hasEdgeWithin(last.getKey(), end, end);\n  };\n\n  _proto.getDirectionMap = function getDirectionMap() {\n    return this.getImmutable().get('directionMap');\n  }\n  /**\n   * Incorporate native DOM selection changes into the EditorState. This\n   * method can be used when we simply want to accept whatever the DOM\n   * has given us to represent selection, and we do not need to re-render\n   * the editor.\n   *\n   * To forcibly move the DOM selection, see `EditorState.forceSelection`.\n   */\n  ;\n\n  EditorState.acceptSelection = function acceptSelection(editorState, selection) {\n    return updateSelection(editorState, selection, false);\n  }\n  /**\n   * At times, we need to force the DOM selection to be where we\n   * need it to be. This can occur when the anchor or focus nodes\n   * are non-text nodes, for instance. In this case, we want to trigger\n   * a re-render of the editor, which in turn forces selection into\n   * the correct place in the DOM. The `forceSelection` method\n   * accomplishes this.\n   *\n   * This method should be used in cases where you need to explicitly\n   * move the DOM selection from one place to another without a change\n   * in ContentState.\n   */\n  ;\n\n  EditorState.forceSelection = function forceSelection(editorState, selection) {\n    if (!selection.getHasFocus()) {\n      selection = selection.set('hasFocus', true);\n    }\n\n    return updateSelection(editorState, selection, true);\n  }\n  /**\n   * Move selection to the end of the editor without forcing focus.\n   */\n  ;\n\n  EditorState.moveSelectionToEnd = function moveSelectionToEnd(editorState) {\n    var content = editorState.getCurrentContent();\n    var lastBlock = content.getLastBlock();\n    var lastKey = lastBlock.getKey();\n    var length = lastBlock.getLength();\n    return EditorState.acceptSelection(editorState, new SelectionState({\n      anchorKey: lastKey,\n      anchorOffset: length,\n      focusKey: lastKey,\n      focusOffset: length,\n      isBackward: false\n    }));\n  }\n  /**\n   * Force focus to the end of the editor. This is useful in scenarios\n   * where we want to programmatically focus the input and it makes sense\n   * to allow the user to continue working seamlessly.\n   */\n  ;\n\n  EditorState.moveFocusToEnd = function moveFocusToEnd(editorState) {\n    var afterSelectionMove = EditorState.moveSelectionToEnd(editorState);\n    return EditorState.forceSelection(afterSelectionMove, afterSelectionMove.getSelection());\n  }\n  /**\n   * Push the current ContentState onto the undo stack if it should be\n   * considered a boundary state, and set the provided ContentState as the\n   * new current content.\n   */\n  ;\n\n  EditorState.push = function push(editorState, contentState, changeType) {\n    var forceSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n    if (editorState.getCurrentContent() === contentState) {\n      return editorState;\n    }\n\n    var directionMap = EditorBidiService.getDirectionMap(contentState, editorState.getDirectionMap());\n\n    if (!editorState.getAllowUndo()) {\n      return EditorState.set(editorState, {\n        currentContent: contentState,\n        directionMap: directionMap,\n        lastChangeType: changeType,\n        selection: contentState.getSelectionAfter(),\n        forceSelection: forceSelection,\n        inlineStyleOverride: null\n      });\n    }\n\n    var selection = editorState.getSelection();\n    var currentContent = editorState.getCurrentContent();\n    var undoStack = editorState.getUndoStack();\n    var newContent = contentState;\n\n    if (selection !== currentContent.getSelectionAfter() || mustBecomeBoundary(editorState, changeType)) {\n      undoStack = undoStack.push(currentContent);\n      newContent = newContent.set('selectionBefore', selection);\n    } else if (changeType === 'insert-characters' || changeType === 'backspace-character' || changeType === 'delete-character') {\n      // Preserve the previous selection.\n      newContent = newContent.set('selectionBefore', currentContent.getSelectionBefore());\n    }\n\n    var inlineStyleOverride = editorState.getInlineStyleOverride(); // Don't discard inline style overrides for the following change types:\n\n    var overrideChangeTypes = ['adjust-depth', 'change-block-type', 'split-block'];\n\n    if (overrideChangeTypes.indexOf(changeType) === -1) {\n      inlineStyleOverride = null;\n    }\n\n    var editorStateChanges = {\n      currentContent: newContent,\n      directionMap: directionMap,\n      undoStack: undoStack,\n      redoStack: Stack(),\n      lastChangeType: changeType,\n      selection: contentState.getSelectionAfter(),\n      forceSelection: forceSelection,\n      inlineStyleOverride: inlineStyleOverride\n    };\n    return EditorState.set(editorState, editorStateChanges);\n  }\n  /**\n   * Make the top ContentState in the undo stack the new current content and\n   * push the current content onto the redo stack.\n   */\n  ;\n\n  EditorState.undo = function undo(editorState) {\n    if (!editorState.getAllowUndo()) {\n      return editorState;\n    }\n\n    var undoStack = editorState.getUndoStack();\n    var newCurrentContent = undoStack.peek();\n\n    if (!newCurrentContent) {\n      return editorState;\n    }\n\n    var currentContent = editorState.getCurrentContent();\n    var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n    return EditorState.set(editorState, {\n      currentContent: newCurrentContent,\n      directionMap: directionMap,\n      undoStack: undoStack.shift(),\n      redoStack: editorState.getRedoStack().push(currentContent),\n      forceSelection: true,\n      inlineStyleOverride: null,\n      lastChangeType: 'undo',\n      nativelyRenderedContent: null,\n      selection: currentContent.getSelectionBefore()\n    });\n  }\n  /**\n   * Make the top ContentState in the redo stack the new current content and\n   * push the current content onto the undo stack.\n   */\n  ;\n\n  EditorState.redo = function redo(editorState) {\n    if (!editorState.getAllowUndo()) {\n      return editorState;\n    }\n\n    var redoStack = editorState.getRedoStack();\n    var newCurrentContent = redoStack.peek();\n\n    if (!newCurrentContent) {\n      return editorState;\n    }\n\n    var currentContent = editorState.getCurrentContent();\n    var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n    return EditorState.set(editorState, {\n      currentContent: newCurrentContent,\n      directionMap: directionMap,\n      undoStack: editorState.getUndoStack().push(currentContent),\n      redoStack: redoStack.shift(),\n      forceSelection: true,\n      inlineStyleOverride: null,\n      lastChangeType: 'redo',\n      nativelyRenderedContent: null,\n      selection: newCurrentContent.getSelectionAfter()\n    });\n  }\n  /**\n   * Not for public consumption.\n   */\n  ;\n\n  function EditorState(immutable) {\n    _defineProperty(this, \"_immutable\", void 0);\n\n    this._immutable = immutable;\n  }\n  /**\n   * Not for public consumption.\n   */\n\n\n  _proto.getImmutable = function getImmutable() {\n    return this._immutable;\n  };\n\n  return EditorState;\n}();\n/**\n * Set the supplied SelectionState as the new current selection, and set\n * the `force` flag to trigger manual selection placement by the view.\n */\n\n\nfunction updateSelection(editorState, selection, forceSelection) {\n  return EditorState.set(editorState, {\n    selection: selection,\n    forceSelection: forceSelection,\n    nativelyRenderedContent: null,\n    inlineStyleOverride: null\n  });\n}\n/**\n * Regenerate the entire tree map for a given ContentState and decorator.\n * Returns an OrderedMap that maps all available ContentBlock objects.\n */\n\n\nfunction generateNewTreeMap(contentState, decorator) {\n  return contentState.getBlockMap().map(function (block) {\n    return BlockTree.generate(contentState, block, decorator);\n  }).toOrderedMap();\n}\n/**\n * Regenerate tree map objects for all ContentBlocks that have changed\n * between the current editorState and newContent. Returns an OrderedMap\n * with only changed regenerated tree map objects.\n */\n\n\nfunction regenerateTreeForNewBlocks(editorState, newBlockMap, newEntityMap, decorator) {\n  var contentState = editorState.getCurrentContent().set('entityMap', newEntityMap);\n  var prevBlockMap = contentState.getBlockMap();\n  var prevTreeMap = editorState.getImmutable().get('treeMap');\n  return prevTreeMap.merge(newBlockMap.toSeq().filter(function (block, key) {\n    return block !== prevBlockMap.get(key);\n  }).map(function (block) {\n    return BlockTree.generate(contentState, block, decorator);\n  }));\n}\n/**\n * Generate tree map objects for a new decorator object, preserving any\n * decorations that are unchanged from the previous decorator.\n *\n * Note that in order for this to perform optimally, decoration Lists for\n * decorators should be preserved when possible to allow for direct immutable\n * List comparison.\n */\n\n\nfunction regenerateTreeForNewDecorator(content, blockMap, previousTreeMap, decorator, existingDecorator) {\n  return previousTreeMap.merge(blockMap.toSeq().filter(function (block) {\n    return decorator.getDecorations(block, content) !== existingDecorator.getDecorations(block, content);\n  }).map(function (block) {\n    return BlockTree.generate(content, block, decorator);\n  }));\n}\n/**\n * Return whether a change should be considered a boundary state, given\n * the previous change type. Allows us to discard potential boundary states\n * during standard typing or deletion behavior.\n */\n\n\nfunction mustBecomeBoundary(editorState, changeType) {\n  var lastChangeType = editorState.getLastChangeType();\n  return changeType !== lastChangeType || changeType !== 'insert-characters' && changeType !== 'backspace-character' && changeType !== 'delete-character';\n}\n\nfunction getInlineStyleForCollapsedSelection(content, selection) {\n  var startKey = selection.getStartKey();\n  var startOffset = selection.getStartOffset();\n  var startBlock = content.getBlockForKey(startKey); // If the cursor is not at the start of the block, look backward to\n  // preserve the style of the preceding character.\n\n  if (startOffset > 0) {\n    return startBlock.getInlineStyleAt(startOffset - 1);\n  } // The caret is at position zero in this block. If the block has any\n  // text at all, use the style of the first character.\n\n\n  if (startBlock.getLength()) {\n    return startBlock.getInlineStyleAt(0);\n  } // Otherwise, look upward in the document to find the closest character.\n\n\n  return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction getInlineStyleForNonCollapsedSelection(content, selection) {\n  var startKey = selection.getStartKey();\n  var startOffset = selection.getStartOffset();\n  var startBlock = content.getBlockForKey(startKey); // If there is a character just inside the selection, use its style.\n\n  if (startOffset < startBlock.getLength()) {\n    return startBlock.getInlineStyleAt(startOffset);\n  } // Check if the selection at the end of a non-empty block. Use the last\n  // style in the block.\n\n\n  if (startOffset > 0) {\n    return startBlock.getInlineStyleAt(startOffset - 1);\n  } // Otherwise, look upward in the document to find the closest character.\n\n\n  return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction lookUpwardForInlineStyle(content, fromKey) {\n  var lastNonEmpty = content.getBlockMap().reverse().skipUntil(function (_, k) {\n    return k === fromKey;\n  }).skip(1).skipUntil(function (block, _) {\n    return block.getLength();\n  }).first();\n\n  if (lastNonEmpty) {\n    return lastNonEmpty.getInlineStyleAt(lastNonEmpty.getLength() - 1);\n  }\n\n  return OrderedSet();\n}\n\nmodule.exports = EditorState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentStateInlineStyle = require(\"./ContentStateInlineStyle\");\n\nvar applyEntityToContentState = require(\"./applyEntityToContentState\");\n\nvar getCharacterRemovalRange = require(\"./getCharacterRemovalRange\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertFragmentIntoContentState = require(\"./insertFragmentIntoContentState\");\n\nvar insertTextIntoContentState = require(\"./insertTextIntoContentState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar removeRangeFromContentState = require(\"./removeRangeFromContentState\");\n\nvar splitBlockInContentState = require(\"./splitBlockInContentState\");\n\nvar OrderedSet = Immutable.OrderedSet;\n/**\n * `DraftModifier` provides a set of convenience methods that apply\n * modifications to a `ContentState` object based on a target `SelectionState`.\n *\n * Any change to a `ContentState` should be decomposable into a series of\n * transaction functions that apply the required changes and return output\n * `ContentState` objects.\n *\n * These functions encapsulate some of the most common transaction sequences.\n */\n\nvar DraftModifier = {\n  replaceText: function replaceText(contentState, rangeToReplace, text, inlineStyle, entityKey) {\n    var withoutEntities = removeEntitiesAtEdges(contentState, rangeToReplace);\n    var withoutText = removeRangeFromContentState(withoutEntities, rangeToReplace);\n    var character = CharacterMetadata.create({\n      style: inlineStyle || OrderedSet(),\n      entity: entityKey || null\n    });\n    return insertTextIntoContentState(withoutText, withoutText.getSelectionAfter(), text, character);\n  },\n  insertText: function insertText(contentState, targetRange, text, inlineStyle, entityKey) {\n    !targetRange.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Target range must be collapsed for `insertText`.') : invariant(false) : void 0;\n    return DraftModifier.replaceText(contentState, targetRange, text, inlineStyle, entityKey);\n  },\n  moveText: function moveText(contentState, removalRange, targetRange) {\n    var movedFragment = getContentStateFragment(contentState, removalRange);\n    var afterRemoval = DraftModifier.removeRange(contentState, removalRange, 'backward');\n    return DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n  },\n  replaceWithFragment: function replaceWithFragment(contentState, targetRange, fragment) {\n    var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n    var withoutEntities = removeEntitiesAtEdges(contentState, targetRange);\n    var withoutText = removeRangeFromContentState(withoutEntities, targetRange);\n    return insertFragmentIntoContentState(withoutText, withoutText.getSelectionAfter(), fragment, mergeBlockData);\n  },\n  removeRange: function removeRange(contentState, rangeToRemove, removalDirection) {\n    var startKey, endKey, startBlock, endBlock;\n\n    if (rangeToRemove.getIsBackward()) {\n      rangeToRemove = rangeToRemove.merge({\n        anchorKey: rangeToRemove.getFocusKey(),\n        anchorOffset: rangeToRemove.getFocusOffset(),\n        focusKey: rangeToRemove.getAnchorKey(),\n        focusOffset: rangeToRemove.getAnchorOffset(),\n        isBackward: false\n      });\n    }\n\n    startKey = rangeToRemove.getAnchorKey();\n    endKey = rangeToRemove.getFocusKey();\n    startBlock = contentState.getBlockForKey(startKey);\n    endBlock = contentState.getBlockForKey(endKey);\n    var startOffset = rangeToRemove.getStartOffset();\n    var endOffset = rangeToRemove.getEndOffset();\n    var startEntityKey = startBlock.getEntityAt(startOffset);\n    var endEntityKey = endBlock.getEntityAt(endOffset - 1); // Check whether the selection state overlaps with a single entity.\n    // If so, try to remove the appropriate substring of the entity text.\n\n    if (startKey === endKey) {\n      if (startEntityKey && startEntityKey === endEntityKey) {\n        var adjustedRemovalRange = getCharacterRemovalRange(contentState.getEntityMap(), startBlock, endBlock, rangeToRemove, removalDirection);\n        return removeRangeFromContentState(contentState, adjustedRemovalRange);\n      }\n    }\n\n    var withoutEntities = removeEntitiesAtEdges(contentState, rangeToRemove);\n    return removeRangeFromContentState(withoutEntities, rangeToRemove);\n  },\n  splitBlock: function splitBlock(contentState, selectionState) {\n    var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n    var withoutText = removeRangeFromContentState(withoutEntities, selectionState);\n    return splitBlockInContentState(withoutText, withoutText.getSelectionAfter());\n  },\n  applyInlineStyle: function applyInlineStyle(contentState, selectionState, inlineStyle) {\n    return ContentStateInlineStyle.add(contentState, selectionState, inlineStyle);\n  },\n  removeInlineStyle: function removeInlineStyle(contentState, selectionState, inlineStyle) {\n    return ContentStateInlineStyle.remove(contentState, selectionState, inlineStyle);\n  },\n  setBlockType: function setBlockType(contentState, selectionState, blockType) {\n    return modifyBlockForContentState(contentState, selectionState, function (block) {\n      return block.merge({\n        type: blockType,\n        depth: 0\n      });\n    });\n  },\n  setBlockData: function setBlockData(contentState, selectionState, blockData) {\n    return modifyBlockForContentState(contentState, selectionState, function (block) {\n      return block.merge({\n        data: blockData\n      });\n    });\n  },\n  mergeBlockData: function mergeBlockData(contentState, selectionState, blockData) {\n    return modifyBlockForContentState(contentState, selectionState, function (block) {\n      return block.merge({\n        data: block.getData().merge(blockData)\n      });\n    });\n  },\n  applyEntity: function applyEntity(contentState, selectionState, entityKey) {\n    var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n    return applyEntityToContentState(withoutEntities, selectionState, entityKey);\n  }\n};\nmodule.exports = DraftModifier;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar nullthrows = function nullthrows(x) {\n  if (x != null) {\n    return x;\n  }\n\n  throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar UserAgentData = require(\"./UserAgentData\");\n\nvar VersionRange = require(\"./VersionRange\");\n\nvar mapObject = require(\"./mapObject\");\n\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\n/**\n * Checks to see whether `name` and `version` satisfy `query`.\n *\n * @param {string} name Name of the browser, device, engine or platform\n * @param {?string} version Version of the browser, engine or platform\n * @param {string} query Query of form \"Name [range expression]\"\n * @param {?function} normalizer Optional pre-processor for range expression\n * @return {boolean}\n */\n\n\nfunction compare(name, version, query, normalizer) {\n  // check for exact match with no version\n  if (name === query) {\n    return true;\n  } // check for non-matching names\n\n\n  if (!query.startsWith(name)) {\n    return false;\n  } // full comparison with version\n\n\n  var range = query.slice(name.length);\n\n  if (version) {\n    range = normalizer ? normalizer(range) : range;\n    return VersionRange.contains(range, version);\n  }\n\n  return false;\n}\n/**\n * Normalizes `version` by stripping any \"NT\" prefix, but only on the Windows\n * platform.\n *\n * Mimics the stripping performed by the `UserAgentWindowsPlatform` PHP class.\n *\n * @param {string} version\n * @return {string}\n */\n\n\nfunction normalizePlatformVersion(version) {\n  if (UserAgentData.platformName === 'Windows') {\n    return version.replace(/^\\s*NT/, '');\n  }\n\n  return version;\n}\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\n */\n\n\nvar UserAgent = {\n  /**\n   * Check if the User Agent browser matches `query`.\n   *\n   * `query` should be a string like \"Chrome\" or \"Chrome > 33\".\n   *\n   * Valid browser names include:\n   *\n   * - ACCESS NetFront\n   * - AOL\n   * - Amazon Silk\n   * - Android\n   * - BlackBerry\n   * - BlackBerry PlayBook\n   * - Chrome\n   * - Chrome for iOS\n   * - Chrome frame\n   * - Facebook PHP SDK\n   * - Facebook for iOS\n   * - Firefox\n   * - IE\n   * - IE Mobile\n   * - Mobile Safari\n   * - Motorola Internet Browser\n   * - Nokia\n   * - Openwave Mobile Browser\n   * - Opera\n   * - Opera Mini\n   * - Opera Mobile\n   * - Safari\n   * - UIWebView\n   * - Unknown\n   * - webOS\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `BrowserDetector` class and\n   * related classes in the same file (see calls to `new UserAgentBrowser` here:\n   * https://fburl.com/50728104).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name [range expression]\"\n   * @return {boolean}\n   */\n  isBrowser: function isBrowser(query) {\n    return compare(UserAgentData.browserName, UserAgentData.browserFullVersion, query);\n  },\n\n  /**\n   * Check if the User Agent browser uses a 32 or 64 bit architecture.\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"32\" or \"64\".\n   * @return {boolean}\n   */\n  isBrowserArchitecture: function isBrowserArchitecture(query) {\n    return compare(UserAgentData.browserArchitecture, null, query);\n  },\n\n  /**\n   * Check if the User Agent device matches `query`.\n   *\n   * `query` should be a string like \"iPhone\" or \"iPad\".\n   *\n   * Valid device names include:\n   *\n   * - Kindle\n   * - Kindle Fire\n   * - Unknown\n   * - iPad\n   * - iPhone\n   * - iPod\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `DeviceDetector` class and\n   * related classes in the same file (see calls to `new UserAgentDevice` here:\n   * https://fburl.com/50728332).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name\"\n   * @return {boolean}\n   */\n  isDevice: function isDevice(query) {\n    return compare(UserAgentData.deviceName, null, query);\n  },\n\n  /**\n   * Check if the User Agent rendering engine matches `query`.\n   *\n   * `query` should be a string like \"WebKit\" or \"WebKit >= 537\".\n   *\n   * Valid engine names include:\n   *\n   * - Gecko\n   * - Presto\n   * - Trident\n   * - WebKit\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `RenderingEngineDetector`\n   * class related classes in the same file (see calls to `new\n   * UserAgentRenderingEngine` here: https://fburl.com/50728617).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name [range expression]\"\n   * @return {boolean}\n   */\n  isEngine: function isEngine(query) {\n    return compare(UserAgentData.engineName, UserAgentData.engineVersion, query);\n  },\n\n  /**\n   * Check if the User Agent platform matches `query`.\n   *\n   * `query` should be a string like \"Windows\" or \"iOS 5 - 6\".\n   *\n   * Valid platform names include:\n   *\n   * - Android\n   * - BlackBerry OS\n   * - Java ME\n   * - Linux\n   * - Mac OS X\n   * - Mac OS X Calendar\n   * - Mac OS X Internet Account\n   * - Symbian\n   * - SymbianOS\n   * - Windows\n   * - Windows Mobile\n   * - Windows Phone\n   * - iOS\n   * - iOS Facebook Integration Account\n   * - iOS Facebook Social Sharing UI\n   * - webOS\n   * - Chrome OS\n   * - etc...\n   *\n   * An authoritative list can be found in the PHP `PlatformDetector` class and\n   * related classes in the same file (see calls to `new UserAgentPlatform`\n   * here: https://fburl.com/50729226).\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"Name [range expression]\"\n   * @return {boolean}\n   */\n  isPlatform: function isPlatform(query) {\n    return compare(UserAgentData.platformName, UserAgentData.platformFullVersion, query, normalizePlatformVersion);\n  },\n\n  /**\n   * Check if the User Agent platform is a 32 or 64 bit architecture.\n   *\n   * @note Function results are memoized\n   *\n   * @param {string} query Query of the form \"32\" or \"64\".\n   * @return {boolean}\n   */\n  isPlatformArchitecture: function isPlatformArchitecture(query) {\n    return compare(UserAgentData.platformArchitecture, null, query);\n  }\n};\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _require = require(\"immutable\"),\n    Map = _require.Map,\n    OrderedSet = _require.OrderedSet,\n    Record = _require.Record; // Immutable.map is typed such that the value for every key in the map\n// must be the same type\n\n\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n  style: EMPTY_SET,\n  entity: null\n};\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata = /*#__PURE__*/function (_CharacterMetadataRec) {\n  _inheritsLoose(CharacterMetadata, _CharacterMetadataRec);\n\n  function CharacterMetadata() {\n    return _CharacterMetadataRec.apply(this, arguments) || this;\n  }\n\n  var _proto = CharacterMetadata.prototype;\n\n  _proto.getStyle = function getStyle() {\n    return this.get('style');\n  };\n\n  _proto.getEntity = function getEntity() {\n    return this.get('entity');\n  };\n\n  _proto.hasStyle = function hasStyle(style) {\n    return this.getStyle().includes(style);\n  };\n\n  CharacterMetadata.applyStyle = function applyStyle(record, style) {\n    var withStyle = record.set('style', record.getStyle().add(style));\n    return CharacterMetadata.create(withStyle);\n  };\n\n  CharacterMetadata.removeStyle = function removeStyle(record, style) {\n    var withoutStyle = record.set('style', record.getStyle().remove(style));\n    return CharacterMetadata.create(withoutStyle);\n  };\n\n  CharacterMetadata.applyEntity = function applyEntity(record, entityKey) {\n    var withEntity = record.getEntity() === entityKey ? record : record.set('entity', entityKey);\n    return CharacterMetadata.create(withEntity);\n  }\n  /**\n   * Use this function instead of the `CharacterMetadata` constructor.\n   * Since most content generally uses only a very small number of\n   * style/entity permutations, we can reuse these objects as often as\n   * possible.\n   */\n  ;\n\n  CharacterMetadata.create = function create(config) {\n    if (!config) {\n      return EMPTY;\n    }\n\n    var defaultConfig = {\n      style: EMPTY_SET,\n      entity: null\n    }; // Fill in unspecified properties, if necessary.\n\n    var configMap = Map(defaultConfig).merge(config);\n    var existing = pool.get(configMap);\n\n    if (existing) {\n      return existing;\n    }\n\n    var newCharacter = new CharacterMetadata(configMap);\n    pool = pool.set(configMap, newCharacter);\n    return newCharacter;\n  };\n\n  CharacterMetadata.fromJS = function fromJS(_ref) {\n    var style = _ref.style,\n        entity = _ref.entity;\n    return new CharacterMetadata({\n      style: Array.isArray(style) ? OrderedSet(style) : style,\n      entity: Array.isArray(entity) ? OrderedSet(entity) : entity\n    });\n  };\n\n  return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\nCharacterMetadata.EMPTY = EMPTY;\nmodule.exports = CharacterMetadata;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of ContentBlock adding support for nesting references by\n * providing links to children, parent, prevSibling, and nextSibling.\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map,\n    OrderedSet = Immutable.OrderedSet,\n    Record = Immutable.Record,\n    Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n  parent: null,\n  characterList: List(),\n  data: Map(),\n  depth: 0,\n  key: '',\n  text: '',\n  type: 'unstyled',\n  children: List(),\n  prevSibling: null,\n  nextSibling: null\n};\n\nvar haveEqualStyle = function haveEqualStyle(charA, charB) {\n  return charA.getStyle() === charB.getStyle();\n};\n\nvar haveEqualEntity = function haveEqualEntity(charA, charB) {\n  return charA.getEntity() === charB.getEntity();\n};\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n  if (!config) {\n    return config;\n  }\n\n  var characterList = config.characterList,\n      text = config.text;\n\n  if (text && !characterList) {\n    config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n  }\n\n  return config;\n};\n\nvar ContentBlockNode = /*#__PURE__*/function (_ref) {\n  _inheritsLoose(ContentBlockNode, _ref);\n\n  function ContentBlockNode() {\n    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n    /* eslint-disable-next-line constructor-super */\n    return _ref.call(this, decorateCharacterList(props)) || this;\n  }\n\n  var _proto = ContentBlockNode.prototype;\n\n  _proto.getKey = function getKey() {\n    return this.get('key');\n  };\n\n  _proto.getType = function getType() {\n    return this.get('type');\n  };\n\n  _proto.getText = function getText() {\n    return this.get('text');\n  };\n\n  _proto.getCharacterList = function getCharacterList() {\n    return this.get('characterList');\n  };\n\n  _proto.getLength = function getLength() {\n    return this.getText().length;\n  };\n\n  _proto.getDepth = function getDepth() {\n    return this.get('depth');\n  };\n\n  _proto.getData = function getData() {\n    return this.get('data');\n  };\n\n  _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getStyle() : EMPTY_SET;\n  };\n\n  _proto.getEntityAt = function getEntityAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getEntity() : null;\n  };\n\n  _proto.getChildKeys = function getChildKeys() {\n    return this.get('children');\n  };\n\n  _proto.getParentKey = function getParentKey() {\n    return this.get('parent');\n  };\n\n  _proto.getPrevSiblingKey = function getPrevSiblingKey() {\n    return this.get('prevSibling');\n  };\n\n  _proto.getNextSiblingKey = function getNextSiblingKey() {\n    return this.get('nextSibling');\n  };\n\n  _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n  };\n\n  _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n  };\n\n  return ContentBlockNode;\n}(Record(defaultRecord));\n\nmodule.exports = ContentBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n  var key;\n\n  while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n    key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n  }\n\n  seenKeys[key] = true;\n  return key;\n}\n\nmodule.exports = generateRandomKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KEY_DELIMITER = '-';\nvar DraftOffsetKey = {\n  encode: function encode(blockKey, decoratorKey, leafKey) {\n    return blockKey + KEY_DELIMITER + decoratorKey + KEY_DELIMITER + leafKey;\n  },\n  decode: function decode(offsetKey) {\n    // Extracts the last two parts of offsetKey and captures the rest in blockKeyParts\n    var _offsetKey$split$reve = offsetKey.split(KEY_DELIMITER).reverse(),\n        leafKey = _offsetKey$split$reve[0],\n        decoratorKey = _offsetKey$split$reve[1],\n        blockKeyParts = _offsetKey$split$reve.slice(2);\n\n    return {\n      // Recomposes the parts of blockKey after reversing them\n      blockKey: blockKeyParts.reverse().join(KEY_DELIMITER),\n      decoratorKey: parseInt(decoratorKey, 10),\n      leafKey: parseInt(leafKey, 10)\n    };\n  }\n};\nmodule.exports = DraftOffsetKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nmodule.exports = function (name) {\n  if (typeof window !== 'undefined' && window.__DRAFT_GKX) {\n    return !!window.__DRAFT_GKX[name];\n  }\n\n  return false;\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n    Map = Immutable.Map,\n    OrderedSet = Immutable.OrderedSet,\n    Record = Immutable.Record,\n    Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n  key: '',\n  type: 'unstyled',\n  text: '',\n  characterList: List(),\n  depth: 0,\n  data: Map()\n};\nvar ContentBlockRecord = Record(defaultRecord);\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n  if (!config) {\n    return config;\n  }\n\n  var characterList = config.characterList,\n      text = config.text;\n\n  if (text && !characterList) {\n    config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n  }\n\n  return config;\n};\n\nvar ContentBlock = /*#__PURE__*/function (_ContentBlockRecord) {\n  _inheritsLoose(ContentBlock, _ContentBlockRecord);\n\n  function ContentBlock(config) {\n    return _ContentBlockRecord.call(this, decorateCharacterList(config)) || this;\n  }\n\n  var _proto = ContentBlock.prototype;\n\n  _proto.getKey = function getKey() {\n    return this.get('key');\n  };\n\n  _proto.getType = function getType() {\n    return this.get('type');\n  };\n\n  _proto.getText = function getText() {\n    return this.get('text');\n  };\n\n  _proto.getCharacterList = function getCharacterList() {\n    return this.get('characterList');\n  };\n\n  _proto.getLength = function getLength() {\n    return this.getText().length;\n  };\n\n  _proto.getDepth = function getDepth() {\n    return this.get('depth');\n  };\n\n  _proto.getData = function getData() {\n    return this.get('data');\n  };\n\n  _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getStyle() : EMPTY_SET;\n  };\n\n  _proto.getEntityAt = function getEntityAt(offset) {\n    var character = this.getCharacterList().get(offset);\n    return character ? character.getEntity() : null;\n  }\n  /**\n   * Execute a callback for every contiguous range of styles within the block.\n   */\n  ;\n\n  _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n  }\n  /**\n   * Execute a callback for every contiguous range of entities within the block.\n   */\n  ;\n\n  _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n    findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n  };\n\n  return ContentBlock;\n}(ContentBlockRecord);\n\nfunction haveEqualStyle(charA, charB) {\n  return charA.getStyle() === charB.getStyle();\n}\n\nfunction haveEqualEntity(charA, charB) {\n  return charA.getEntity() === charB.getEntity();\n}\n\nmodule.exports = ContentBlock;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * This function is used to mark string literals representing CSS class names\n * so that they can be transformed statically. This allows for modularization\n * and minification of CSS class names.\n *\n * In static_upstream, this function is actually implemented, but it should\n * eventually be replaced with something more descriptive, and the transform\n * that is used in the main stack should be ported for use elsewhere.\n *\n * @param string|object className to modularize, or an object of key/values.\n *                      In the object case, the values are conditions that\n *                      determine if the className keys should be included.\n * @param [string ...]  Variable list of classNames in the string case.\n * @return string       Renderable space-separated CSS className.\n */\nfunction cx(classNames) {\n  if (typeof classNames == 'object') {\n    return Object.keys(classNames).filter(function (className) {\n      return classNames[className];\n    }).map(replace).join(' ');\n  }\n\n  return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n  return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return node.nodeType === Node.ELEMENT_NODE;\n}\n\nmodule.exports = isElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * Unicode-enabled replacesments for basic String functions.\n *\n * All the functions in this module assume that the input string is a valid\n * UTF-16 encoding of a Unicode sequence. If it's not the case, the behavior\n * will be undefined.\n *\n * WARNING: Since this module is typechecks-enforced, you may find new bugs\n * when replacing normal String functions with ones provided here.\n */\n'use strict';\n\nvar invariant = require(\"./invariant\"); // These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\n\n\nvar SURROGATE_HIGH_START = 0xD800;\nvar SURROGATE_HIGH_END = 0xDBFF;\nvar SURROGATE_LOW_START = 0xDC00;\nvar SURROGATE_LOW_END = 0xDFFF;\nvar SURROGATE_UNITS_REGEX = /[\\uD800-\\uDFFF]/;\n/**\n * @param {number} codeUnit   A Unicode code-unit, in range [0, 0x10FFFF]\n * @return {boolean}          Whether code-unit is in a surrogate (hi/low) range\n */\n\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n  return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\n/**\n * Returns whether the two characters starting at `index` form a surrogate pair.\n * For example, given the string s = \"\\uD83D\\uDE0A\", (s, 0) returns true and\n * (s, 1) returns false.\n *\n * @param {string} str\n * @param {number} index\n * @return {boolean}\n */\n\n\nfunction isSurrogatePair(str, index) {\n  !(0 <= index && index < str.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isSurrogatePair: Invalid index %s for string length %s.', index, str.length) : invariant(false) : void 0;\n\n  if (index + 1 === str.length) {\n    return false;\n  }\n\n  var first = str.charCodeAt(index);\n  var second = str.charCodeAt(index + 1);\n  return SURROGATE_HIGH_START <= first && first <= SURROGATE_HIGH_END && SURROGATE_LOW_START <= second && second <= SURROGATE_LOW_END;\n}\n/**\n * @param {string} str  Non-empty string\n * @return {boolean}    True if the input includes any surrogate code units\n */\n\n\nfunction hasSurrogateUnit(str) {\n  return SURROGATE_UNITS_REGEX.test(str);\n}\n/**\n * Return the length of the original Unicode character at given position in the\n * String by looking into the UTF-16 code unit; that is equal to 1 for any\n * non-surrogate characters in BMP ([U+0000..U+D7FF] and [U+E000, U+FFFF]); and\n * returns 2 for the hi/low surrogates ([U+D800..U+DFFF]), which are in fact\n * representing non-BMP characters ([U+10000..U+10FFFF]).\n *\n * Examples:\n * - '\\u0020' => 1\n * - '\\u3020' => 1\n * - '\\uD835' => 2\n * - '\\uD835\\uDDEF' => 2\n * - '\\uDDEF' => 2\n *\n * @param {string} str  Non-empty string\n * @param {number} pos  Position in the string to look for one code unit\n * @return {number}      Number 1 or 2\n */\n\n\nfunction getUTF16Length(str, pos) {\n  return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\n/**\n * Fully Unicode-enabled replacement for String#length\n *\n * @param {string} str  Valid Unicode string\n * @return {number}     The number of Unicode characters in the string\n */\n\n\nfunction strlen(str) {\n  // Call the native functions if there's no surrogate char\n  if (!hasSurrogateUnit(str)) {\n    return str.length;\n  }\n\n  var len = 0;\n\n  for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n    len++;\n  }\n\n  return len;\n}\n/**\n * Fully Unicode-enabled replacement for String#substr()\n *\n * @param {string} str      Valid Unicode string\n * @param {number} start    Location in Unicode sequence to begin extracting\n * @param {?number} length  The number of Unicode characters to extract\n *                          (default: to the end of the string)\n * @return {string}         Extracted sub-string\n */\n\n\nfunction substr(str, start, length) {\n  start = start || 0;\n  length = length === undefined ? Infinity : length || 0; // Call the native functions if there's no surrogate char\n\n  if (!hasSurrogateUnit(str)) {\n    return str.substr(start, length);\n  } // Obvious cases\n\n\n  var size = str.length;\n\n  if (size <= 0 || start > size || length <= 0) {\n    return '';\n  } // Find the actual starting position\n\n\n  var posA = 0;\n\n  if (start > 0) {\n    for (; start > 0 && posA < size; start--) {\n      posA += getUTF16Length(str, posA);\n    }\n\n    if (posA >= size) {\n      return '';\n    }\n  } else if (start < 0) {\n    for (posA = size; start < 0 && 0 < posA; start++) {\n      posA -= getUTF16Length(str, posA - 1);\n    }\n\n    if (posA < 0) {\n      posA = 0;\n    }\n  } // Find the actual ending position\n\n\n  var posB = size;\n\n  if (length < size) {\n    for (posB = posA; length > 0 && posB < size; length--) {\n      posB += getUTF16Length(str, posB);\n    }\n  }\n\n  return str.substring(posA, posB);\n}\n/**\n * Fully Unicode-enabled replacement for String#substring()\n *\n * @param {string} str    Valid Unicode string\n * @param {number} start  Location in Unicode sequence to begin extracting\n * @param {?number} end   Location in Unicode sequence to end extracting\n *                        (default: end of the string)\n * @return {string}       Extracted sub-string\n */\n\n\nfunction substring(str, start, end) {\n  start = start || 0;\n  end = end === undefined ? Infinity : end || 0;\n\n  if (start < 0) {\n    start = 0;\n  }\n\n  if (end < 0) {\n    end = 0;\n  }\n\n  var length = Math.abs(end - start);\n  start = start < end ? start : end;\n  return substr(str, start, length);\n}\n/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str        Valid Unicode string\n * @return {array<number>}    A list of code-points in [0..0x10FFFF]\n */\n\n\nfunction getCodePoints(str) {\n  var codePoints = [];\n\n  for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n    codePoints.push(str.codePointAt(pos));\n  }\n\n  return codePoints;\n}\n\nvar UnicodeUtils = {\n  getCodePoints: getCodePoints,\n  getUTF16Length: getUTF16Length,\n  hasSurrogateUnit: hasSurrogateUnit,\n  isCodeUnitInSurrogateRange: isCodeUnitInSurrogateRange,\n  isSurrogatePair: isSurrogatePair,\n  strlen: strlen,\n  substring: substring,\n  substr: substr\n};\nmodule.exports = UnicodeUtils;","'use strict';\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require('react');\n\nvar PropTypes = require('prop-types'); // qr.js doesn't handle error level of zero (M) so we need to do it right,\n// thus the deep require.\n\n\nvar QRCodeImpl = require('qr.js/lib/QRCode');\n\nvar ErrorCorrectLevel = require('qr.js/lib/ErrorCorrectLevel'); // TODO: pull this off of the QRCode class type so it matches.\n\n\n// Convert from UTF-16, forcing the use of byte-mode encoding in our QR Code.\n// This allows us to encode Hanji, Kanji, emoji, etc. Ideally we'd do more\n// detection and not resort to byte-mode if possible, but we're trading off\n// a smaller library for a smaller amount of data we can potentially encode.\n// Based on http://jonisalonen.com/2012/from-utf-16-to-utf-8-in-javascript/\nfunction convertStr(str) {\n  var out = '';\n\n  for (var i = 0; i < str.length; i++) {\n    var charcode = str.charCodeAt(i);\n\n    if (charcode < 0x0080) {\n      out += String.fromCharCode(charcode);\n    } else if (charcode < 0x0800) {\n      out += String.fromCharCode(0xc0 | charcode >> 6);\n      out += String.fromCharCode(0x80 | charcode & 0x3f);\n    } else if (charcode < 0xd800 || charcode >= 0xe000) {\n      out += String.fromCharCode(0xe0 | charcode >> 12);\n      out += String.fromCharCode(0x80 | charcode >> 6 & 0x3f);\n      out += String.fromCharCode(0x80 | charcode & 0x3f);\n    } else {\n      // This is a surrogate pair, so we'll reconsitute the pieces and work\n      // from that\n      i++;\n      charcode = 0x10000 + ((charcode & 0x3ff) << 10 | str.charCodeAt(i) & 0x3ff);\n      out += String.fromCharCode(0xf0 | charcode >> 18);\n      out += String.fromCharCode(0x80 | charcode >> 12 & 0x3f);\n      out += String.fromCharCode(0x80 | charcode >> 6 & 0x3f);\n      out += String.fromCharCode(0x80 | charcode & 0x3f);\n    }\n  }\n\n  return out;\n}\n\nvar DEFAULT_PROPS = {\n  size: 128,\n  level: 'L',\n  bgColor: '#FFFFFF',\n  fgColor: '#000000',\n  includeMargin: false\n};\nvar PROP_TYPES = process.env.NODE_ENV !== 'production' ? {\n  value: PropTypes.string.isRequired,\n  size: PropTypes.number,\n  level: PropTypes.oneOf(['L', 'M', 'Q', 'H']),\n  bgColor: PropTypes.string,\n  fgColor: PropTypes.string,\n  includeMargin: PropTypes.bool,\n  imageSettings: PropTypes.shape({\n    src: PropTypes.string.isRequired,\n    height: PropTypes.number.isRequired,\n    width: PropTypes.number.isRequired,\n    excavate: PropTypes.bool,\n    x: PropTypes.number,\n    y: PropTypes.number\n  })\n} : {};\nvar MARGIN_SIZE = 4; // This is *very* rough estimate of max amount of QRCode allowed to be covered.\n// It is \"wrong\" in a lot of ways (area is a terrible way to estimate, it\n// really should be number of modules covered), but if for some reason we don't\n// get an explicit height or width, I'd rather default to something than throw.\n\nvar DEFAULT_IMG_SCALE = 0.1;\n\nfunction generatePath(modules) {\n  var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var ops = [];\n  modules.forEach(function (row, y) {\n    var start = null;\n    row.forEach(function (cell, x) {\n      if (!cell && start !== null) {\n        // M0 0h7v1H0z injects the space with the move and drops the comma,\n        // saving a char per operation\n        ops.push(\"M\".concat(start + margin, \" \").concat(y + margin, \"h\").concat(x - start, \"v1H\").concat(start + margin, \"z\"));\n        start = null;\n        return;\n      } // end of row, clean up or skip\n\n\n      if (x === row.length - 1) {\n        if (!cell) {\n          // We would have closed the op above already so this can only mean\n          // 2+ light modules in a row.\n          return;\n        }\n\n        if (start === null) {\n          // Just a single dark module.\n          ops.push(\"M\".concat(x + margin, \",\").concat(y + margin, \" h1v1H\").concat(x + margin, \"z\"));\n        } else {\n          // Otherwise finish the current line.\n          ops.push(\"M\".concat(start + margin, \",\").concat(y + margin, \" h\").concat(x + 1 - start, \"v1H\").concat(start + margin, \"z\"));\n        }\n\n        return;\n      }\n\n      if (cell && start === null) {\n        start = x;\n      }\n    });\n  });\n  return ops.join('');\n} // We could just do this in generatePath, except that we want to support\n// non-Path2D canvas, so we need to keep it an explicit step.\n\n\nfunction excavateModules(modules, excavation) {\n  return modules.slice().map(function (row, y) {\n    if (y < excavation.y || y >= excavation.y + excavation.h) {\n      return row;\n    }\n\n    return row.map(function (cell, x) {\n      if (x < excavation.x || x >= excavation.x + excavation.w) {\n        return cell;\n      }\n\n      return false;\n    });\n  });\n}\n\nfunction getImageSettings(props, cells) {\n  var imageSettings = props.imageSettings,\n      size = props.size,\n      includeMargin = props.includeMargin;\n\n  if (imageSettings == null) {\n    return null;\n  }\n\n  var margin = includeMargin ? MARGIN_SIZE : 0;\n  var numCells = cells.length + margin * 2;\n  var defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n  var scale = numCells / size;\n  var w = (imageSettings.width || defaultSize) * scale;\n  var h = (imageSettings.height || defaultSize) * scale;\n  var x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n  var y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n  var excavation = null;\n\n  if (imageSettings.excavate) {\n    var floorX = Math.floor(x);\n    var floorY = Math.floor(y);\n    var ceilW = Math.ceil(w + x - floorX);\n    var ceilH = Math.ceil(h + y - floorY);\n    excavation = {\n      x: floorX,\n      y: floorY,\n      w: ceilW,\n      h: ceilH\n    };\n  }\n\n  return {\n    x: x,\n    y: y,\n    h: h,\n    w: w,\n    excavation: excavation\n  };\n} // For canvas we're going to switch our drawing mode based on whether or not\n// the environment supports Path2D. We only need the constructor to be\n// supported, but Edge doesn't actually support the path (string) type\n// argument. Luckily it also doesn't support the addPath() method. We can\n// treat that as the same thing.\n\n\nvar SUPPORTS_PATH2D = function () {\n  try {\n    new Path2D().addPath(new Path2D());\n  } catch (e) {\n    return false;\n  }\n\n  return true;\n}();\n\nvar QRCodeCanvas =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n  _inherits(QRCodeCanvas, _React$PureComponent);\n\n  function QRCodeCanvas() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, QRCodeCanvas);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(QRCodeCanvas)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_this), \"_canvas\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_image\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      imgLoaded: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleImageLoad\", function () {\n      _this.setState({\n        imgLoaded: true\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(QRCodeCanvas, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this._image && this._image.complete) {\n        this.handleImageLoad();\n      }\n\n      this.update();\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(nextProps) {\n      var _this$props$imageSett, _nextProps$imageSetti;\n\n      var currentSrc = (_this$props$imageSett = this.props.imageSettings) === null || _this$props$imageSett === void 0 ? void 0 : _this$props$imageSett.src;\n      var nextSrc = (_nextProps$imageSetti = nextProps.imageSettings) === null || _nextProps$imageSetti === void 0 ? void 0 : _nextProps$imageSetti.src;\n\n      if (currentSrc !== nextSrc) {\n        this.setState({\n          imgLoaded: false\n        });\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.update();\n    }\n  }, {\n    key: \"update\",\n    value: function update() {\n      var _this$props = this.props,\n          value = _this$props.value,\n          size = _this$props.size,\n          level = _this$props.level,\n          bgColor = _this$props.bgColor,\n          fgColor = _this$props.fgColor,\n          includeMargin = _this$props.includeMargin,\n          imageSettings = _this$props.imageSettings; // We'll use type===-1 to force QRCode to automatically pick the best type\n\n      var qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n      qrcode.addData(convertStr(value));\n      qrcode.make();\n\n      if (this._canvas != null) {\n        var canvas = this._canvas;\n        var ctx = canvas.getContext('2d');\n\n        if (!ctx) {\n          return;\n        }\n\n        var cells = qrcode.modules;\n\n        if (cells === null) {\n          return;\n        }\n\n        var margin = includeMargin ? MARGIN_SIZE : 0;\n        var numCells = cells.length + margin * 2;\n        var calculatedImageSettings = getImageSettings(this.props, cells);\n\n        if (imageSettings != null && calculatedImageSettings != null) {\n          if (calculatedImageSettings.excavation != null) {\n            cells = excavateModules(cells, calculatedImageSettings.excavation);\n          }\n        } // We're going to scale this so that the number of drawable units\n        // matches the number of cells. This avoids rounding issues, but does\n        // result in some potentially unwanted single pixel issues between\n        // blocks, only in environments that don't support Path2D.\n\n\n        var pixelRatio = window.devicePixelRatio || 1;\n        canvas.height = canvas.width = size * pixelRatio;\n        var scale = size / numCells * pixelRatio;\n        ctx.scale(scale, scale); // Draw solid background, only paint dark modules.\n\n        ctx.fillStyle = bgColor;\n        ctx.fillRect(0, 0, numCells, numCells);\n        ctx.fillStyle = fgColor;\n\n        if (SUPPORTS_PATH2D) {\n          // $FlowFixMe: Path2D c'tor doesn't support args yet.\n          ctx.fill(new Path2D(generatePath(cells, margin)));\n        } else {\n          cells.forEach(function (row, rdx) {\n            row.forEach(function (cell, cdx) {\n              if (cell) {\n                ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\n              }\n            });\n          });\n        }\n\n        if (this.state.imgLoaded && this._image && calculatedImageSettings != null) {\n          ctx.drawImage(this._image, calculatedImageSettings.x + margin, calculatedImageSettings.y + margin, calculatedImageSettings.w, calculatedImageSettings.h);\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props2 = this.props,\n          value = _this$props2.value,\n          size = _this$props2.size,\n          level = _this$props2.level,\n          bgColor = _this$props2.bgColor,\n          fgColor = _this$props2.fgColor,\n          style = _this$props2.style,\n          includeMargin = _this$props2.includeMargin,\n          imageSettings = _this$props2.imageSettings,\n          otherProps = _objectWithoutProperties(_this$props2, [\"value\", \"size\", \"level\", \"bgColor\", \"fgColor\", \"style\", \"includeMargin\", \"imageSettings\"]);\n\n      var canvasStyle = _objectSpread({\n        height: size,\n        width: size\n      }, style);\n\n      var img = null;\n      var imgSrc = imageSettings && imageSettings.src;\n\n      if (imageSettings != null && imgSrc != null) {\n        img = React.createElement(\"img\", {\n          src: imgSrc,\n          style: {\n            display: 'none'\n          },\n          onLoad: this.handleImageLoad,\n          ref: function ref(_ref) {\n            return _this2._image = _ref;\n          }\n        });\n      }\n\n      return React.createElement(React.Fragment, null, React.createElement(\"canvas\", _extends({\n        style: canvasStyle,\n        height: size,\n        width: size,\n        ref: function ref(_ref2) {\n          return _this2._canvas = _ref2;\n        }\n      }, otherProps)), img);\n    }\n  }]);\n\n  return QRCodeCanvas;\n}(React.PureComponent);\n\n_defineProperty(QRCodeCanvas, \"defaultProps\", DEFAULT_PROPS);\n\nif (process.env.NODE_ENV !== 'production') {\n  QRCodeCanvas.propTypes = PROP_TYPES;\n}\n\nvar QRCodeSVG =\n/*#__PURE__*/\nfunction (_React$PureComponent2) {\n  _inherits(QRCodeSVG, _React$PureComponent2);\n\n  function QRCodeSVG() {\n    _classCallCheck(this, QRCodeSVG);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(QRCodeSVG).apply(this, arguments));\n  }\n\n  _createClass(QRCodeSVG, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props3 = this.props,\n          value = _this$props3.value,\n          size = _this$props3.size,\n          level = _this$props3.level,\n          bgColor = _this$props3.bgColor,\n          fgColor = _this$props3.fgColor,\n          includeMargin = _this$props3.includeMargin,\n          imageSettings = _this$props3.imageSettings,\n          otherProps = _objectWithoutProperties(_this$props3, [\"value\", \"size\", \"level\", \"bgColor\", \"fgColor\", \"includeMargin\", \"imageSettings\"]); // We'll use type===-1 to force QRCode to automatically pick the best type\n\n\n      var qrcode = new QRCodeImpl(-1, ErrorCorrectLevel[level]);\n      qrcode.addData(convertStr(value));\n      qrcode.make();\n      var cells = qrcode.modules;\n\n      if (cells === null) {\n        return null;\n      }\n\n      var margin = includeMargin ? MARGIN_SIZE : 0;\n      var numCells = cells.length + margin * 2;\n      var calculatedImageSettings = getImageSettings(this.props, cells);\n      var image = null;\n\n      if (imageSettings != null && calculatedImageSettings != null) {\n        if (calculatedImageSettings.excavation != null) {\n          cells = excavateModules(cells, calculatedImageSettings.excavation);\n        }\n\n        image = React.createElement(\"image\", {\n          xlinkHref: imageSettings.src,\n          height: calculatedImageSettings.h,\n          width: calculatedImageSettings.w,\n          x: calculatedImageSettings.x + margin,\n          y: calculatedImageSettings.y + margin,\n          preserveAspectRatio: \"none\"\n        });\n      } // Drawing strategy: instead of a rect per module, we're going to create a\n      // single path for the dark modules and layer that on top of a light rect,\n      // for a total of 2 DOM nodes. We pay a bit more in string concat but that's\n      // way faster than DOM ops.\n      // For level 1, 441 nodes -> 2\n      // For level 40, 31329 -> 2\n\n\n      var fgPath = generatePath(cells, margin);\n      return React.createElement(\"svg\", _extends({\n        shapeRendering: \"crispEdges\",\n        height: size,\n        width: size,\n        viewBox: \"0 0 \".concat(numCells, \" \").concat(numCells)\n      }, otherProps), React.createElement(\"path\", {\n        fill: bgColor,\n        d: \"M0,0 h\".concat(numCells, \"v\").concat(numCells, \"H0z\")\n      }), React.createElement(\"path\", {\n        fill: fgColor,\n        d: fgPath\n      }), image);\n    }\n  }]);\n\n  return QRCodeSVG;\n}(React.PureComponent);\n\n_defineProperty(QRCodeSVG, \"defaultProps\", DEFAULT_PROPS);\n\nif (process.env.NODE_ENV !== 'production') {\n  QRCodeSVG.propTypes = PROP_TYPES;\n}\n\nvar QRCode = function QRCode(props) {\n  var renderAs = props.renderAs,\n      otherProps = _objectWithoutProperties(props, [\"renderAs\"]);\n\n  var Component = renderAs === 'svg' ? QRCodeSVG : QRCodeCanvas;\n  return React.createElement(Component, otherProps);\n};\n\nQRCode.defaultProps = _objectSpread({\n  renderAs: 'canvas'\n}, DEFAULT_PROPS);\nmodule.exports = QRCode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar BlockMapBuilder = {\n  createFromArray: function createFromArray(blocks) {\n    return OrderedMap(blocks.map(function (block) {\n      return [block.getKey(), block];\n    }));\n  }\n};\nmodule.exports = BlockMapBuilder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Search through an array to find contiguous stretches of elements that\n * match a specified filter function.\n *\n * When ranges are found, execute a specified `found` function to supply\n * the values to the caller.\n */\nfunction findRangesImmutable(haystack, areEqualFn, filterFn, foundFn) {\n  if (!haystack.size) {\n    return;\n  }\n\n  var cursor = 0;\n  haystack.reduce(function (value, nextValue, nextIndex) {\n    if (!areEqualFn(value, nextValue)) {\n      if (filterFn(value)) {\n        foundFn(cursor, nextIndex);\n      }\n\n      cursor = nextIndex;\n    }\n\n    return nextValue;\n  });\n  filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isHTMLElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  if (!node.ownerDocument.defaultView) {\n    return node instanceof HTMLElement;\n  }\n\n  if (node instanceof node.ownerDocument.defaultView.HTMLElement) {\n    return true;\n  }\n\n  return false;\n}\n\nmodule.exports = isHTMLElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\n/**\n * For a collapsed selection state, remove text based on the specified strategy.\n * If the selection state is not collapsed, remove the entire selected range.\n */\n\nfunction removeTextWithStrategy(editorState, strategy, direction) {\n  var selection = editorState.getSelection();\n  var content = editorState.getCurrentContent();\n  var target = selection;\n  var anchorKey = selection.getAnchorKey();\n  var focusKey = selection.getFocusKey();\n  var anchorBlock = content.getBlockForKey(anchorKey);\n\n  if (experimentalTreeDataSupport) {\n    if (direction === 'forward') {\n      if (anchorKey !== focusKey) {\n        // For now we ignore forward delete across blocks,\n        // if there is demand for this we will implement it.\n        return content;\n      }\n    }\n  }\n\n  if (selection.isCollapsed()) {\n    if (direction === 'forward') {\n      if (editorState.isSelectionAtEndOfContent()) {\n        return content;\n      }\n\n      if (experimentalTreeDataSupport) {\n        var isAtEndOfBlock = selection.getAnchorOffset() === content.getBlockForKey(anchorKey).getLength();\n\n        if (isAtEndOfBlock) {\n          var anchorBlockSibling = content.getBlockForKey(anchorBlock.nextSibling);\n\n          if (!anchorBlockSibling || anchorBlockSibling.getLength() === 0) {\n            // For now we ignore forward delete at the end of a block,\n            // if there is demand for this we will implement it.\n            return content;\n          }\n        }\n      }\n    } else if (editorState.isSelectionAtStartOfContent()) {\n      return content;\n    }\n\n    target = strategy(editorState);\n\n    if (target === selection) {\n      return content;\n    }\n  }\n\n  return DraftModifier.removeRange(content, target, direction);\n}\n\nmodule.exports = removeTextWithStrategy;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar Tablelvl2Context = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n  Tablelvl2Context.displayName = 'Tablelvl2Context';\n}\n\nexport default Tablelvl2Context;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar getContentStateFragment = function getContentStateFragment(contentState, selectionState) {\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset(); // Edge entities should be stripped to ensure that we don't preserve\n  // invalid partial entities when the fragment is reused. We do, however,\n  // preserve entities that are entirely within the selection range.\n\n  var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n  var blockMap = contentWithoutEdgeEntities.getBlockMap();\n  var blockKeys = blockMap.keySeq();\n  var startIndex = blockKeys.indexOf(startKey);\n  var endIndex = blockKeys.indexOf(endKey) + 1;\n  return randomizeBlockMapKeys(blockMap.slice(startIndex, endIndex).map(function (block, blockKey) {\n    var text = block.getText();\n    var chars = block.getCharacterList();\n\n    if (startKey === endKey) {\n      return block.merge({\n        text: text.slice(startOffset, endOffset),\n        characterList: chars.slice(startOffset, endOffset)\n      });\n    }\n\n    if (blockKey === startKey) {\n      return block.merge({\n        text: text.slice(startOffset),\n        characterList: chars.slice(startOffset)\n      });\n    }\n\n    if (blockKey === endKey) {\n      return block.merge({\n        text: text.slice(0, endOffset),\n        characterList: chars.slice(0, endOffset)\n      });\n    }\n\n    return block;\n  }));\n};\n\nmodule.exports = getContentStateFragment;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar uuid = require(\"./uuid\");\n\nvar Map = Immutable.Map;\nvar instances = Map();\nvar instanceKey = uuid();\n/**\n * Temporary utility for generating the warnings\n */\n\nfunction logWarning(oldMethodCall, newMethodCall) {\n  console.warn('WARNING: ' + oldMethodCall + ' will be deprecated soon!\\nPlease use \"' + newMethodCall + '\" instead.');\n}\n\n/**\n * A \"document entity\" is an object containing metadata associated with a\n * piece of text in a ContentBlock.\n *\n * For example, a `link` entity might include a `uri` property. When a\n * ContentBlock is rendered in the browser, text that refers to that link\n * entity may be rendered as an anchor, with the `uri` as the href value.\n *\n * In a ContentBlock, every position in the text may correspond to zero\n * or one entities. This correspondence is tracked using a key string,\n * generated via DraftEntity.create() and used to obtain entity metadata\n * via DraftEntity.get().\n */\nvar DraftEntity = {\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.getLastCreatedEntityKey' instead.\n   * ---\n   * Get the random key string from whatever entity was last created.\n   * We need this to support the new API, as part of transitioning to put Entity\n   * storage in contentState.\n   */\n  getLastCreatedEntityKey: function getLastCreatedEntityKey() {\n    logWarning('DraftEntity.getLastCreatedEntityKey', 'contentState.getLastCreatedEntityKey');\n    return DraftEntity.__getLastCreatedEntityKey();\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.createEntity' instead.\n   * ---\n   * Create a DraftEntityInstance and store it for later retrieval.\n   *\n   * A random key string will be generated and returned. This key may\n   * be used to track the entity's usage in a ContentBlock, and for\n   * retrieving data about the entity at render time.\n   */\n  create: function create(type, mutability, data) {\n    logWarning('DraftEntity.create', 'contentState.createEntity');\n    return DraftEntity.__create(type, mutability, data);\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.addEntity' instead.\n   * ---\n   * Add an existing DraftEntityInstance to the DraftEntity map. This is\n   * useful when restoring instances from the server.\n   */\n  add: function add(instance) {\n    logWarning('DraftEntity.add', 'contentState.addEntity');\n    return DraftEntity.__add(instance);\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.getEntity' instead.\n   * ---\n   * Retrieve the entity corresponding to the supplied key string.\n   */\n  get: function get(key) {\n    logWarning('DraftEntity.get', 'contentState.getEntity');\n    return DraftEntity.__get(key);\n  },\n\n  /**\n   * Get all the entities in the content state.\n   */\n  __getAll: function __getAll() {\n    return instances;\n  },\n\n  /**\n   * Load the entity map with the given set of entities.\n   */\n  __loadWithEntities: function __loadWithEntities(entities) {\n    instances = entities;\n    instanceKey = uuid();\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.mergeEntityData' instead.\n   * ---\n   * Entity instances are immutable. If you need to update the data for an\n   * instance, this method will merge your data updates and return a new\n   * instance.\n   */\n  mergeData: function mergeData(key, toMerge) {\n    logWarning('DraftEntity.mergeData', 'contentState.mergeEntityData');\n    return DraftEntity.__mergeData(key, toMerge);\n  },\n\n  /**\n   * WARNING: This method will be deprecated soon!\n   * Please use 'contentState.replaceEntityData' instead.\n   * ---\n   * Completely replace the data for a given instance.\n   */\n  replaceData: function replaceData(key, newData) {\n    logWarning('DraftEntity.replaceData', 'contentState.replaceEntityData');\n    return DraftEntity.__replaceData(key, newData);\n  },\n  // ***********************************WARNING******************************\n  // --- the above public API will be deprecated in the next version of Draft!\n  // The methods below this line are private - don't call them directly.\n\n  /**\n   * Get the random key string from whatever entity was last created.\n   * We need this to support the new API, as part of transitioning to put Entity\n   * storage in contentState.\n   */\n  __getLastCreatedEntityKey: function __getLastCreatedEntityKey() {\n    return instanceKey;\n  },\n\n  /**\n   * Create a DraftEntityInstance and store it for later retrieval.\n   *\n   * A random key string will be generated and returned. This key may\n   * be used to track the entity's usage in a ContentBlock, and for\n   * retrieving data about the entity at render time.\n   */\n  __create: function __create(type, mutability, data) {\n    return DraftEntity.__add(new DraftEntityInstance({\n      type: type,\n      mutability: mutability,\n      data: data || {}\n    }));\n  },\n\n  /**\n   * Add an existing DraftEntityInstance to the DraftEntity map. This is\n   * useful when restoring instances from the server.\n   */\n  __add: function __add(instance) {\n    instanceKey = uuid();\n    instances = instances.set(instanceKey, instance);\n    return instanceKey;\n  },\n\n  /**\n   * Retrieve the entity corresponding to the supplied key string.\n   */\n  __get: function __get(key) {\n    var instance = instances.get(key);\n    !!!instance ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown DraftEntity key: %s.', key) : invariant(false) : void 0;\n    return instance;\n  },\n\n  /**\n   * Entity instances are immutable. If you need to update the data for an\n   * instance, this method will merge your data updates and return a new\n   * instance.\n   */\n  __mergeData: function __mergeData(key, toMerge) {\n    var instance = DraftEntity.__get(key);\n\n    var newData = _objectSpread({}, instance.getData(), toMerge);\n\n    var newInstance = instance.set('data', newData);\n    instances = instances.set(key, newInstance);\n    return newInstance;\n  },\n\n  /**\n   * Completely replace the data for a given instance.\n   */\n  __replaceData: function __replaceData(key, newData) {\n    var instance = DraftEntity.__get(key);\n\n    var newInstance = instance.set('data', newData);\n    instances = instances.set(key, newInstance);\n    return newInstance;\n  }\n};\nmodule.exports = DraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar defaultRecord = {\n  anchorKey: '',\n  anchorOffset: 0,\n  focusKey: '',\n  focusOffset: 0,\n  isBackward: false,\n  hasFocus: false\n};\n/* $FlowFixMe[unclear-type] This comment suppresses an error found when\n * automatically adding a type annotation with the codemod Komodo/Annotate_\n * exports. To see the error delete this comment and run Flow. */\n\nvar SelectionStateRecord = Record(defaultRecord);\n\nvar SelectionState = /*#__PURE__*/function (_SelectionStateRecord) {\n  _inheritsLoose(SelectionState, _SelectionStateRecord);\n\n  function SelectionState() {\n    return _SelectionStateRecord.apply(this, arguments) || this;\n  }\n\n  var _proto = SelectionState.prototype;\n\n  _proto.serialize = function serialize() {\n    return 'Anchor: ' + this.getAnchorKey() + ':' + this.getAnchorOffset() + ', ' + 'Focus: ' + this.getFocusKey() + ':' + this.getFocusOffset() + ', ' + 'Is Backward: ' + String(this.getIsBackward()) + ', ' + 'Has Focus: ' + String(this.getHasFocus());\n  };\n\n  _proto.getAnchorKey = function getAnchorKey() {\n    return this.get('anchorKey');\n  };\n\n  _proto.getAnchorOffset = function getAnchorOffset() {\n    return this.get('anchorOffset');\n  };\n\n  _proto.getFocusKey = function getFocusKey() {\n    return this.get('focusKey');\n  };\n\n  _proto.getFocusOffset = function getFocusOffset() {\n    return this.get('focusOffset');\n  };\n\n  _proto.getIsBackward = function getIsBackward() {\n    return this.get('isBackward');\n  };\n\n  _proto.getHasFocus = function getHasFocus() {\n    return this.get('hasFocus');\n  }\n  /**\n   * Return whether the specified range overlaps with an edge of the\n   * SelectionState.\n   */\n  ;\n\n  _proto.hasEdgeWithin = function hasEdgeWithin(blockKey, start, end) {\n    var anchorKey = this.getAnchorKey();\n    var focusKey = this.getFocusKey();\n\n    if (anchorKey === focusKey && anchorKey === blockKey) {\n      var selectionStart = this.getStartOffset();\n      var selectionEnd = this.getEndOffset();\n      return start <= selectionStart && selectionStart <= end || // selectionStart is between start and end, or\n      start <= selectionEnd && selectionEnd <= end // selectionEnd is between start and end\n      ;\n    }\n\n    if (blockKey !== anchorKey && blockKey !== focusKey) {\n      return false;\n    }\n\n    var offsetToCheck = blockKey === anchorKey ? this.getAnchorOffset() : this.getFocusOffset();\n    return start <= offsetToCheck && end >= offsetToCheck;\n  };\n\n  _proto.isCollapsed = function isCollapsed() {\n    return this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset();\n  };\n\n  _proto.getStartKey = function getStartKey() {\n    return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey();\n  };\n\n  _proto.getStartOffset = function getStartOffset() {\n    return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset();\n  };\n\n  _proto.getEndKey = function getEndKey() {\n    return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey();\n  };\n\n  _proto.getEndOffset = function getEndOffset() {\n    return this.getIsBackward() ? this.getAnchorOffset() : this.getFocusOffset();\n  };\n\n  SelectionState.createEmpty = function createEmpty(key) {\n    return new SelectionState({\n      anchorKey: key,\n      anchorOffset: 0,\n      focusKey: key,\n      focusOffset: 0,\n      isBackward: false,\n      hasFocus: false\n    });\n  };\n\n  return SelectionState;\n}(SelectionStateRecord);\n\nmodule.exports = SelectionState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Constants to represent text directionality\n *\n * Also defines a *global* direciton, to be used in bidi algorithms as a\n * default fallback direciton, when no better direction is found or provided.\n *\n * NOTE: Use `setGlobalDir()`, or update `initGlobalDir()`, to set the initial\n *       global direction value based on the application.\n *\n * Part of the implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\n\nvar LTR = 'LTR'; // Left-to-Right direction\n\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null; // == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\n\nfunction isStrong(dir) {\n  return dir === LTR || dir === RTL;\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\n */\n\n\nfunction getHTMLDir(dir) {\n  !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n  return dir === LTR ? 'ltr' : 'rtl';\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property, but returns null if `dir` has same value as `otherDir`.\n * `null`.\n */\n\n\nfunction getHTMLDirIfDifferent(dir, otherDir) {\n  !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n  !isStrong(otherDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`otherDir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n  return dir === otherDir ? null : getHTMLDir(dir);\n} // == Global Direction ==\n\n/**\n * Set the global direction.\n */\n\n\nfunction setGlobalDir(dir) {\n  globalDir = dir;\n}\n/**\n * Initialize the global direction\n */\n\n\nfunction initGlobalDir() {\n  setGlobalDir(LTR);\n}\n/**\n * Get the global direction\n */\n\n\nfunction getGlobalDir() {\n  if (!globalDir) {\n    this.initGlobalDir();\n  }\n\n  !globalDir ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Global direction not set.') : invariant(false) : void 0;\n  return globalDir;\n}\n\nvar UnicodeBidiDirection = {\n  // Values\n  NEUTRAL: NEUTRAL,\n  LTR: LTR,\n  RTL: RTL,\n  // Helpers\n  isStrong: isStrong,\n  getHTMLDir: getHTMLDir,\n  getHTMLDirIfDifferent: getHTMLDirIfDifferent,\n  // Global Direction\n  setGlobalDir: setGlobalDir,\n  initGlobalDir: initGlobalDir,\n  getGlobalDir: getGlobalDir\n};\nmodule.exports = UnicodeBidiDirection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n/**\n * Get the key from the node's nearest offset-aware ancestor.\n */\n\n\nfunction findAncestorOffsetKey(node) {\n  var searchNode = node;\n\n  while (searchNode && searchNode !== getCorrectDocumentFromNode(node).documentElement) {\n    var key = getSelectionOffsetKeyForNode(searchNode);\n\n    if (key != null) {\n      return key;\n    }\n\n    searchNode = searchNode.parentNode;\n  }\n\n  return null;\n}\n\nmodule.exports = findAncestorOffsetKey;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getCorrectDocumentFromNode(node) {\n  if (!node || !node.ownerDocument) {\n    return document;\n  }\n\n  return node.ownerDocument;\n}\n\nmodule.exports = getCorrectDocumentFromNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nmodule.exports = {\n  BACKSPACE: 8,\n  TAB: 9,\n  RETURN: 13,\n  ALT: 18,\n  ESC: 27,\n  SPACE: 32,\n  PAGE_UP: 33,\n  PAGE_DOWN: 34,\n  END: 35,\n  HOME: 36,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  DELETE: 46,\n  COMMA: 188,\n  PERIOD: 190,\n  A: 65,\n  Z: 90,\n  ZERO: 48,\n  NUMPAD_0: 96,\n  NUMPAD_9: 105\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getStyleProperty = require(\"./getStyleProperty\");\n/**\n * @param {DOMNode} element [description]\n * @param {string} name Overflow style property name.\n * @return {boolean} True if the supplied ndoe is scrollable.\n */\n\n\nfunction _isNodeScrollable(element, name) {\n  var overflow = Style.get(element, name);\n  return overflow === 'auto' || overflow === 'scroll';\n}\n/**\n * Utilities for querying and mutating style properties.\n */\n\n\nvar Style = {\n  /**\n   * Gets the style property for the supplied node. This will return either the\n   * computed style, if available, or the declared style.\n   *\n   * @param {DOMNode} node\n   * @param {string} name Style property name.\n   * @return {?string} Style property value.\n   */\n  get: getStyleProperty,\n\n  /**\n   * Determines the nearest ancestor of a node that is scrollable.\n   *\n   * NOTE: This can be expensive if used repeatedly or on a node nested deeply.\n   *\n   * @param {?DOMNode} node Node from which to start searching.\n   * @return {?DOMWindow|DOMElement} Scroll parent of the supplied node.\n   */\n  getScrollParent: function getScrollParent(node) {\n    if (!node) {\n      return null;\n    }\n\n    var ownerDocument = node.ownerDocument;\n\n    while (node && node !== ownerDocument.body) {\n      if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n        return node;\n      }\n\n      node = node.parentNode;\n    }\n\n    return ownerDocument.defaultView || ownerDocument.parentWindow;\n  }\n};\nmodule.exports = Style;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar getDocumentScrollElement = require(\"./getDocumentScrollElement\");\n\nvar getUnboundedScrollPosition = require(\"./getUnboundedScrollPosition\");\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are bounded. This means that if the scroll position is\n * negative or exceeds the element boundaries (which is possible using inertial\n * scrolling), you will get zero or the maximum scroll position, respectively.\n *\n * If you need the unbound scroll position, use `getUnboundedScrollPosition`.\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\n\nfunction getScrollPosition(scrollable) {\n  var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n\n  if (scrollable.Window && scrollable instanceof scrollable.Window) {\n    scrollable = documentScrollElement;\n  }\n\n  var scrollPosition = getUnboundedScrollPosition(scrollable);\n  var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n  var xMax = scrollable.scrollWidth - viewport.clientWidth;\n  var yMax = scrollable.scrollHeight - viewport.clientHeight;\n  scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n  scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n  return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Utility method for determining whether or not the value returned\n * from a handler indicates that it was handled.\n */\nfunction isEventHandled(value) {\n  return value === 'handled' || value === true;\n}\n\nmodule.exports = isEventHandled;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar AtomicBlockUtils = require(\"./AtomicBlockUtils\");\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar CompositeDraftDecorator = require(\"./CompositeDraftDecorator\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditor = require(\"./DraftEditor.react\");\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar RawDraftContentState = require(\"./RawDraftContentState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar convertFromDraftStateToRaw = require(\"./convertFromDraftStateToRaw\");\n\nvar convertFromRawToDraftState = require(\"./convertFromRawToDraftState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getVisibleSelectionRect = require(\"./getVisibleSelectionRect\");\n\nvar convertFromHTML = require(\"./convertFromHTMLToContentBlocks\");\n\nvar DraftPublic = {\n  Editor: DraftEditor,\n  EditorBlock: DraftEditorBlock,\n  EditorState: EditorState,\n  CompositeDecorator: CompositeDraftDecorator,\n  Entity: DraftEntity,\n  EntityInstance: DraftEntityInstance,\n  BlockMapBuilder: BlockMapBuilder,\n  CharacterMetadata: CharacterMetadata,\n  ContentBlock: ContentBlock,\n  ContentState: ContentState,\n  RawDraftContentState: RawDraftContentState,\n  SelectionState: SelectionState,\n  AtomicBlockUtils: AtomicBlockUtils,\n  KeyBindingUtil: KeyBindingUtil,\n  Modifier: DraftModifier,\n  RichUtils: RichTextEditorUtil,\n  DefaultDraftBlockRenderMap: DefaultDraftBlockRenderMap,\n  DefaultDraftInlineStyle: DefaultDraftInlineStyle,\n  convertFromHTML: convertFromHTML,\n  convertFromRaw: convertFromRawToDraftState,\n  convertToRaw: convertFromDraftStateToRaw,\n  genKey: generateRandomKey,\n  getDefaultKeyBinding: getDefaultKeyBinding,\n  getVisibleSelectionRect: getVisibleSelectionRect\n};\nmodule.exports = DraftPublic;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n    Record = Immutable.Record,\n    Repeat = Immutable.Repeat,\n    ImmutableMap = Immutable.Map,\n    OrderedMap = Immutable.OrderedMap;\nvar defaultRecord = {\n  entityMap: null,\n  blockMap: null,\n  selectionBefore: null,\n  selectionAfter: null\n};\nvar ContentStateRecord = Record(defaultRecord);\n/* $FlowFixMe[signature-verification-failure] Supressing a `signature-\n * verification-failure` error here. TODO: T65949050 Clean up the branch for\n * this GK */\n\nvar ContentBlockNodeRecord = gkx('draft_tree_data_support') ? ContentBlockNode : ContentBlock;\n\nvar ContentState = /*#__PURE__*/function (_ContentStateRecord) {\n  _inheritsLoose(ContentState, _ContentStateRecord);\n\n  function ContentState() {\n    return _ContentStateRecord.apply(this, arguments) || this;\n  }\n\n  var _proto = ContentState.prototype;\n\n  _proto.getEntityMap = function getEntityMap() {\n    // TODO: update this when we fully remove DraftEntity\n    return DraftEntity;\n  };\n\n  _proto.getBlockMap = function getBlockMap() {\n    return this.get('blockMap');\n  };\n\n  _proto.getSelectionBefore = function getSelectionBefore() {\n    return this.get('selectionBefore');\n  };\n\n  _proto.getSelectionAfter = function getSelectionAfter() {\n    return this.get('selectionAfter');\n  };\n\n  _proto.getBlockForKey = function getBlockForKey(key) {\n    var block = this.getBlockMap().get(key);\n    return block;\n  };\n\n  _proto.getKeyBefore = function getKeyBefore(key) {\n    return this.getBlockMap().reverse().keySeq().skipUntil(function (v) {\n      return v === key;\n    }).skip(1).first();\n  };\n\n  _proto.getKeyAfter = function getKeyAfter(key) {\n    return this.getBlockMap().keySeq().skipUntil(function (v) {\n      return v === key;\n    }).skip(1).first();\n  };\n\n  _proto.getBlockAfter = function getBlockAfter(key) {\n    return this.getBlockMap().skipUntil(function (_, k) {\n      return k === key;\n    }).skip(1).first();\n  };\n\n  _proto.getBlockBefore = function getBlockBefore(key) {\n    return this.getBlockMap().reverse().skipUntil(function (_, k) {\n      return k === key;\n    }).skip(1).first();\n  };\n\n  _proto.getBlocksAsArray = function getBlocksAsArray() {\n    return this.getBlockMap().toArray();\n  };\n\n  _proto.getFirstBlock = function getFirstBlock() {\n    return this.getBlockMap().first();\n  };\n\n  _proto.getLastBlock = function getLastBlock() {\n    return this.getBlockMap().last();\n  };\n\n  _proto.getPlainText = function getPlainText(delimiter) {\n    return this.getBlockMap().map(function (block) {\n      return block ? block.getText() : '';\n    }).join(delimiter || '\\n');\n  };\n\n  _proto.getLastCreatedEntityKey = function getLastCreatedEntityKey() {\n    // TODO: update this when we fully remove DraftEntity\n    return DraftEntity.__getLastCreatedEntityKey();\n  };\n\n  _proto.hasText = function hasText() {\n    var blockMap = this.getBlockMap();\n    return blockMap.size > 1 || // make sure that there are no zero width space chars\n    escape(blockMap.first().getText()).replace(/%u200B/g, '').length > 0;\n  };\n\n  _proto.createEntity = function createEntity(type, mutability, data) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__create(type, mutability, data);\n\n    return this;\n  };\n\n  _proto.mergeEntityData = function mergeEntityData(key, toMerge) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__mergeData(key, toMerge);\n\n    return this;\n  };\n\n  _proto.replaceEntityData = function replaceEntityData(key, newData) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__replaceData(key, newData);\n\n    return this;\n  };\n\n  _proto.addEntity = function addEntity(instance) {\n    // TODO: update this when we fully remove DraftEntity\n    DraftEntity.__add(instance);\n\n    return this;\n  };\n\n  _proto.getEntity = function getEntity(key) {\n    // TODO: update this when we fully remove DraftEntity\n    return DraftEntity.__get(key);\n  };\n\n  _proto.getAllEntities = function getAllEntities() {\n    return DraftEntity.__getAll();\n  };\n\n  _proto.loadWithEntities = function loadWithEntities(entities) {\n    return DraftEntity.__loadWithEntities(entities);\n  };\n\n  ContentState.createFromBlockArray = function createFromBlockArray( // TODO: update flow type when we completely deprecate the old entity API\n  blocks, entityMap) {\n    // TODO: remove this when we completely deprecate the old entity API\n    var theBlocks = Array.isArray(blocks) ? blocks : blocks.contentBlocks;\n    var blockMap = BlockMapBuilder.createFromArray(theBlocks);\n    var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n    return new ContentState({\n      blockMap: blockMap,\n      entityMap: entityMap || DraftEntity,\n      selectionBefore: selectionState,\n      selectionAfter: selectionState\n    });\n  };\n\n  ContentState.createFromText = function createFromText(text) {\n    var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /\\r\\n?|\\n/g;\n    var strings = text.split(delimiter);\n    var blocks = strings.map(function (block) {\n      block = sanitizeDraftText(block);\n      return new ContentBlockNodeRecord({\n        key: generateRandomKey(),\n        text: block,\n        type: 'unstyled',\n        characterList: List(Repeat(CharacterMetadata.EMPTY, block.length))\n      });\n    });\n    return ContentState.createFromBlockArray(blocks);\n  };\n\n  ContentState.fromJS = function fromJS(state) {\n    return new ContentState(_objectSpread({}, state, {\n      blockMap: OrderedMap(state.blockMap).map(ContentState.createContentBlockFromJS),\n      selectionBefore: new SelectionState(state.selectionBefore),\n      selectionAfter: new SelectionState(state.selectionAfter)\n    }));\n  };\n\n  ContentState.createContentBlockFromJS = function createContentBlockFromJS(block) {\n    var characterList = block.characterList;\n    return new ContentBlockNodeRecord(_objectSpread({}, block, {\n      data: ImmutableMap(block.data),\n      characterList: characterList != null ? List((Array.isArray(characterList) ? characterList : getOwnObjectValues(characterList)).map(function (c) {\n        return CharacterMetadata.fromJS(c);\n      })) : undefined\n    }));\n  };\n\n  return ContentState;\n}(ContentStateRecord);\n\nmodule.exports = ContentState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Basic (stateless) API for text direction detection\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\n/**\n * RegExp ranges of characters with a *Strong* Bidi_Class value.\n *\n * Data is based on DerivedBidiClass.txt in UCD version 7.0.0.\n *\n * NOTE: For performance reasons, we only support Unicode's\n *       Basic Multilingual Plane (BMP) for now.\n */\nvar RANGE_BY_BIDI_TYPE = {\n  L: \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BB\" + \"\\u01BC-\\u01BF\\u01C0-\\u01C3\\u01C4-\\u0293\\u0294\\u0295-\\u02AF\\u02B0-\\u02B8\" + \"\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u0377\" + \"\\u037A\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\" + \"\\u03A3-\\u03F5\\u03F7-\\u0481\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559\" + \"\\u055A-\\u055F\\u0561-\\u0587\\u0589\\u0903\\u0904-\\u0939\\u093B\\u093D\" + \"\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0950\\u0958-\\u0961\\u0964-\\u0965\" + \"\\u0966-\\u096F\\u0970\\u0971\\u0972-\\u0980\\u0982-\\u0983\\u0985-\\u098C\" + \"\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\" + \"\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09CE\\u09D7\\u09DC-\\u09DD\" + \"\\u09DF-\\u09E1\\u09E6-\\u09EF\\u09F0-\\u09F1\\u09F4-\\u09F9\\u09FA\\u0A03\" + \"\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\" + \"\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\" + \"\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\" + \"\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0AD0\" + \"\\u0AE0-\\u0AE1\\u0AE6-\\u0AEF\\u0AF0\\u0B02-\\u0B03\\u0B05-\\u0B0C\\u0B0F-\\u0B10\" + \"\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\" + \"\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\" + \"\\u0B70\\u0B71\\u0B72-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\" + \"\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\" + \"\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\" + \"\\u0BE6-\\u0BEF\\u0BF0-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\" + \"\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C59\\u0C60-\\u0C61\" + \"\\u0C66-\\u0C6F\\u0C7F\\u0C82-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\" + \"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CBE\\u0CBF\\u0CC0-\\u0CC4\\u0CC6\" + \"\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0CDE\\u0CE0-\\u0CE1\\u0CE6-\\u0CEF\" + \"\\u0CF1-\\u0CF2\\u0D02-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\" + \"\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D57\\u0D60-\\u0D61\" + \"\\u0D66-\\u0D6F\\u0D70-\\u0D75\\u0D79\\u0D7A-\\u0D7F\\u0D82-\\u0D83\\u0D85-\\u0D96\" + \"\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\" + \"\\u0DE6-\\u0DEF\\u0DF2-\\u0DF3\\u0DF4\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\" + \"\\u0E46\\u0E4F\\u0E50-\\u0E59\\u0E5A-\\u0E5B\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\" + \"\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\" + \"\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\" + \"\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F01-\\u0F03\\u0F04-\\u0F12\\u0F13\\u0F14\" + \"\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F20-\\u0F29\\u0F2A-\\u0F33\\u0F34\\u0F36\\u0F38\" + \"\\u0F3E-\\u0F3F\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\" + \"\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FCF\\u0FD0-\\u0FD4\\u0FD5-\\u0FD8\" + \"\\u0FD9-\\u0FDA\\u1000-\\u102A\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F\" + \"\\u1040-\\u1049\\u104A-\\u104F\\u1050-\\u1055\\u1056-\\u1057\\u105A-\\u105D\\u1061\" + \"\\u1062-\\u1064\\u1065-\\u1066\\u1067-\\u106D\\u106E-\\u1070\\u1075-\\u1081\" + \"\\u1083-\\u1084\\u1087-\\u108C\\u108E\\u108F\\u1090-\\u1099\\u109A-\\u109C\" + \"\\u109E-\\u109F\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FB\\u10FC\" + \"\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\" + \"\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\" + \"\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u1368\" + \"\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166D-\\u166E\" + \"\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EB-\\u16ED\\u16EE-\\u16F0\" + \"\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735-\\u1736\" + \"\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\" + \"\\u17C7-\\u17C8\\u17D4-\\u17D6\\u17D7\\u17D8-\\u17DA\\u17DC\\u17E0-\\u17E9\" + \"\\u1810-\\u1819\\u1820-\\u1842\\u1843\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\" + \"\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\" + \"\\u1933-\\u1938\\u1946-\\u194F\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\" + \"\\u19B0-\\u19C0\\u19C1-\\u19C7\\u19C8-\\u19C9\\u19D0-\\u19D9\\u19DA\\u1A00-\\u1A16\" + \"\\u1A19-\\u1A1A\\u1A1E-\\u1A1F\\u1A20-\\u1A54\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\" + \"\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AA6\\u1AA7\\u1AA8-\\u1AAD\" + \"\\u1B04\\u1B05-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B45-\\u1B4B\" + \"\\u1B50-\\u1B59\\u1B5A-\\u1B60\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1B82\\u1B83-\\u1BA0\" + \"\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BAE-\\u1BAF\\u1BB0-\\u1BB9\\u1BBA-\\u1BE5\\u1BE7\" + \"\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1BFC-\\u1BFF\\u1C00-\\u1C23\\u1C24-\\u1C2B\" + \"\\u1C34-\\u1C35\\u1C3B-\\u1C3F\\u1C40-\\u1C49\\u1C4D-\\u1C4F\\u1C50-\\u1C59\" + \"\\u1C5A-\\u1C77\\u1C78-\\u1C7D\\u1C7E-\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\" + \"\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF2-\\u1CF3\\u1CF5-\\u1CF6\\u1D00-\\u1D2B\" + \"\\u1D2C-\\u1D6A\\u1D6B-\\u1D77\\u1D78\\u1D79-\\u1D9A\\u1D9B-\\u1DBF\\u1E00-\\u1F15\" + \"\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\" + \"\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\" + \"\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\" + \"\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\" + \"\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2135-\\u2138\\u2139\" + \"\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2182\\u2183-\\u2184\" + \"\\u2185-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\" + \"\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7C-\\u2C7D\\u2C7E-\\u2CE4\" + \"\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\" + \"\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\" + \"\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005\\u3006\\u3007\" + \"\\u3021-\\u3029\\u302E-\\u302F\\u3031-\\u3035\\u3038-\\u303A\\u303B\\u303C\" + \"\\u3041-\\u3096\\u309D-\\u309E\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FE\\u30FF\" + \"\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u3191\\u3192-\\u3195\\u3196-\\u319F\" + \"\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3200-\\u321C\\u3220-\\u3229\\u322A-\\u3247\" + \"\\u3248-\\u324F\\u3260-\\u327B\\u327F\\u3280-\\u3289\\u328A-\\u32B0\\u32C0-\\u32CB\" + \"\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\" + \"\\u4E00-\\u9FCC\\uA000-\\uA014\\uA015\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA4F8-\\uA4FD\" + \"\\uA4FE-\\uA4FF\\uA500-\\uA60B\\uA60C\\uA610-\\uA61F\\uA620-\\uA629\\uA62A-\\uA62B\" + \"\\uA640-\\uA66D\\uA66E\\uA680-\\uA69B\\uA69C-\\uA69D\\uA6A0-\\uA6E5\\uA6E6-\\uA6EF\" + \"\\uA6F2-\\uA6F7\\uA722-\\uA76F\\uA770\\uA771-\\uA787\\uA789-\\uA78A\\uA78B-\\uA78E\" + \"\\uA790-\\uA7AD\\uA7B0-\\uA7B1\\uA7F7\\uA7F8-\\uA7F9\\uA7FA\\uA7FB-\\uA801\" + \"\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA823-\\uA824\\uA827\\uA830-\\uA835\" + \"\\uA836-\\uA837\\uA840-\\uA873\\uA880-\\uA881\\uA882-\\uA8B3\\uA8B4-\\uA8C3\" + \"\\uA8CE-\\uA8CF\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8F8-\\uA8FA\\uA8FB\\uA900-\\uA909\" + \"\\uA90A-\\uA925\\uA92E-\\uA92F\\uA930-\\uA946\\uA952-\\uA953\\uA95F\\uA960-\\uA97C\" + \"\\uA983\\uA984-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uA9C1-\\uA9CD\" + \"\\uA9CF\\uA9D0-\\uA9D9\\uA9DE-\\uA9DF\\uA9E0-\\uA9E4\\uA9E6\\uA9E7-\\uA9EF\" + \"\\uA9F0-\\uA9F9\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\" + \"\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F\\uAA60-\\uAA6F\" + \"\\uAA70\\uAA71-\\uAA76\\uAA77-\\uAA79\\uAA7A\\uAA7B\\uAA7D\\uAA7E-\\uAAAF\\uAAB1\" + \"\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAADD\\uAADE-\\uAADF\" + \"\\uAAE0-\\uAAEA\\uAAEB\\uAAEE-\\uAAEF\\uAAF0-\\uAAF1\\uAAF2\\uAAF3-\\uAAF4\\uAAF5\" + \"\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\" + \"\\uAB30-\\uAB5A\\uAB5B\\uAB5C-\\uAB5F\\uAB64-\\uAB65\\uABC0-\\uABE2\\uABE3-\\uABE4\" + \"\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEB\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\" + \"\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uE000-\\uF8FF\\uF900-\\uFA6D\\uFA70-\\uFAD9\" + \"\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFF6F\\uFF70\" + \"\\uFF71-\\uFF9D\\uFF9E-\\uFF9F\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\" + \"\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\",\n  R: \"\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05D0-\\u05EA\\u05EB-\\u05EF\" + \"\\u05F0-\\u05F2\\u05F3-\\u05F4\\u05F5-\\u05FF\\u07C0-\\u07C9\\u07CA-\\u07EA\" + \"\\u07F4-\\u07F5\\u07FA\\u07FB-\\u07FF\\u0800-\\u0815\\u081A\\u0824\\u0828\" + \"\\u082E-\\u082F\\u0830-\\u083E\\u083F\\u0840-\\u0858\\u085C-\\u085D\\u085E\" + \"\\u085F-\\u089F\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB37\\uFB38-\\uFB3C\" + \"\\uFB3D\\uFB3E\\uFB3F\\uFB40-\\uFB41\\uFB42\\uFB43-\\uFB44\\uFB45\\uFB46-\\uFB4F\",\n  AL: \"\\u0608\\u060B\\u060D\\u061B\\u061C\\u061D\\u061E-\\u061F\\u0620-\\u063F\\u0640\" + \"\\u0641-\\u064A\\u066D\\u066E-\\u066F\\u0671-\\u06D3\\u06D4\\u06D5\\u06E5-\\u06E6\" + \"\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FD-\\u06FE\\u06FF\\u0700-\\u070D\\u070E\\u070F\" + \"\\u0710\\u0712-\\u072F\\u074B-\\u074C\\u074D-\\u07A5\\u07B1\\u07B2-\\u07BF\" + \"\\u08A0-\\u08B2\\u08B3-\\u08E3\\uFB50-\\uFBB1\\uFBB2-\\uFBC1\\uFBC2-\\uFBD2\" + \"\\uFBD3-\\uFD3D\\uFD40-\\uFD4F\\uFD50-\\uFD8F\\uFD90-\\uFD91\\uFD92-\\uFDC7\" + \"\\uFDC8-\\uFDCF\\uFDF0-\\uFDFB\\uFDFC\\uFDFE-\\uFDFF\\uFE70-\\uFE74\\uFE75\" + \"\\uFE76-\\uFEFC\\uFEFD-\\uFEFE\"\n};\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n/**\n * Returns the first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str  A text block; e.g. paragraph, table cell, tag\n * @return     A character with strong bidi direction, or null if not found\n */\n\nfunction firstStrongChar(str) {\n  var match = REGEX_STRONG.exec(str);\n  return match == null ? null : match[0];\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str  A text block; e.g. paragraph, table cell, tag\n * @return     The resolved direction\n */\n\n\nfunction firstStrongCharDir(str) {\n  var strongChar = firstStrongChar(str);\n\n  if (strongChar == null) {\n    return UnicodeBidiDirection.NEUTRAL;\n  }\n\n  return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str       A text block; e.g. paragraph, table cell, tag\n * @param fallback  Fallback direction, used if no strong direction detected\n *                  for the block (default = NEUTRAL)\n * @return          The resolved direction\n */\n\n\nfunction resolveBlockDir(str, fallback) {\n  fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n\n  if (!str.length) {\n    return fallback;\n  }\n\n  var blockDir = firstStrongCharDir(str);\n  return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * NOTE: This function is similar to resolveBlockDir(), but uses the global\n * direction as the fallback, so it *always* returns a Strong direction,\n * making it useful for integration in places that you need to make the final\n * decision, like setting some CSS class.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str             A text block; e.g. paragraph, table cell\n * @param strongFallback  Fallback direction, used if no strong direction\n *                        detected for the block (default = global direction)\n * @return                The resolved Strong direction\n */\n\n\nfunction getDirection(str, strongFallback) {\n  if (!strongFallback) {\n    strongFallback = UnicodeBidiDirection.getGlobalDir();\n  }\n\n  !UnicodeBidiDirection.isStrong(strongFallback) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Fallback direction must be a strong direction') : invariant(false) : void 0;\n  return resolveBlockDir(str, strongFallback);\n}\n/**\n * Returns true if getDirection(arguments...) returns LTR.\n *\n * @param str             A text block; e.g. paragraph, table cell\n * @param strongFallback  Fallback direction, used if no strong direction\n *                        detected for the block (default = global direction)\n * @return                True if the resolved direction is LTR\n */\n\n\nfunction isDirectionLTR(str, strongFallback) {\n  return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\n/**\n * Returns true if getDirection(arguments...) returns RTL.\n *\n * @param str             A text block; e.g. paragraph, table cell\n * @param strongFallback  Fallback direction, used if no strong direction\n *                        detected for the block (default = global direction)\n * @return                True if the resolved direction is RTL\n */\n\n\nfunction isDirectionRTL(str, strongFallback) {\n  return getDirection(str, strongFallback) === UnicodeBidiDirection.RTL;\n}\n\nvar UnicodeBidi = {\n  firstStrongChar: firstStrongChar,\n  firstStrongCharDir: firstStrongCharDir,\n  resolveBlockDir: resolveBlockDir,\n  getDirection: getDirection,\n  isDirectionLTR: isDirectionLTR,\n  isDirectionRTL: isDirectionRTL\n};\nmodule.exports = UnicodeBidi;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar _require = require(\"immutable\"),\n    Map = _require.Map;\n\nvar UL_WRAP = React.createElement(\"ul\", {\n  className: cx('public/DraftStyleDefault/ul')\n});\nvar OL_WRAP = React.createElement(\"ol\", {\n  className: cx('public/DraftStyleDefault/ol')\n});\nvar PRE_WRAP = React.createElement(\"pre\", {\n  className: cx('public/DraftStyleDefault/pre')\n});\nvar DefaultDraftBlockRenderMap = Map({\n  'header-one': {\n    element: 'h1'\n  },\n  'header-two': {\n    element: 'h2'\n  },\n  'header-three': {\n    element: 'h3'\n  },\n  'header-four': {\n    element: 'h4'\n  },\n  'header-five': {\n    element: 'h5'\n  },\n  'header-six': {\n    element: 'h6'\n  },\n  section: {\n    element: 'section'\n  },\n  article: {\n    element: 'article'\n  },\n  'unordered-list-item': {\n    element: 'li',\n    wrapper: UL_WRAP\n  },\n  'ordered-list-item': {\n    element: 'li',\n    wrapper: OL_WRAP\n  },\n  blockquote: {\n    element: 'blockquote'\n  },\n  atomic: {\n    element: 'figure'\n  },\n  'code-block': {\n    element: 'pre',\n    wrapper: PRE_WRAP\n  },\n  unstyled: {\n    element: 'div',\n    aliasedElements: ['p']\n  }\n});\nmodule.exports = DefaultDraftBlockRenderMap;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _require = require(\"./draftKeyUtils\"),\n    notEmptyKey = _require.notEmptyKey;\n/**\n * Return the entity key that should be used when inserting text for the\n * specified target selection, only if the entity is `MUTABLE`. `IMMUTABLE`\n * and `SEGMENTED` entities should not be used for insertion behavior.\n */\n\n\nfunction getEntityKeyForSelection(contentState, targetSelection) {\n  var entityKey;\n\n  if (targetSelection.isCollapsed()) {\n    var key = targetSelection.getAnchorKey();\n    var offset = targetSelection.getAnchorOffset();\n\n    if (offset > 0) {\n      entityKey = contentState.getBlockForKey(key).getEntityAt(offset - 1);\n\n      if (entityKey !== contentState.getBlockForKey(key).getEntityAt(offset)) {\n        return null;\n      }\n\n      return filterKey(contentState.getEntityMap(), entityKey);\n    }\n\n    return null;\n  }\n\n  var startKey = targetSelection.getStartKey();\n  var startOffset = targetSelection.getStartOffset();\n  var startBlock = contentState.getBlockForKey(startKey);\n  entityKey = startOffset === startBlock.getLength() ? null : startBlock.getEntityAt(startOffset);\n  return filterKey(contentState.getEntityMap(), entityKey);\n}\n/**\n * Determine whether an entity key corresponds to a `MUTABLE` entity. If so,\n * return it. If not, return null.\n */\n\n\nfunction filterKey(entityMap, entityKey) {\n  if (notEmptyKey(entityKey)) {\n    var entity = entityMap.__get(entityKey);\n\n    return entity.getMutability() === 'MUTABLE' ? entityKey : null;\n  }\n\n  return null;\n}\n\nmodule.exports = getEntityKeyForSelection;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar isTextNode = require(\"./isTextNode\");\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if ('contains' in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n  } else {\n    return false;\n  }\n}\n\nmodule.exports = containsNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @param {DOMElement} element\n * @param {DOMDocument} doc\n * @return {boolean}\n */\nfunction _isViewportScrollElement(element, doc) {\n  return !!doc && (element === doc.documentElement || element === doc.body);\n}\n/**\n * Scroll Module. This class contains 4 simple static functions\n * to be used to access Element.scrollTop/scrollLeft properties.\n * To solve the inconsistencies between browsers when either\n * document.body or document.documentElement is supplied,\n * below logic will be used to alleviate the issue:\n *\n * 1. If 'element' is either 'document.body' or 'document.documentElement,\n *    get whichever element's 'scroll{Top,Left}' is larger.\n * 2. If 'element' is either 'document.body' or 'document.documentElement',\n *    set the 'scroll{Top,Left}' on both elements.\n */\n\n\nvar Scroll = {\n  /**\n   * @param {DOMElement} element\n   * @return {number}\n   */\n  getTop: function getTop(element) {\n    var doc = element.ownerDocument;\n    return _isViewportScrollElement(element, doc) ? // In practice, they will either both have the same value,\n    // or one will be zero and the other will be the scroll position\n    // of the viewport. So we can use `X || Y` instead of `Math.max(X, Y)`\n    doc.body.scrollTop || doc.documentElement.scrollTop : element.scrollTop;\n  },\n\n  /**\n   * @param {DOMElement} element\n   * @param {number} newTop\n   */\n  setTop: function setTop(element, newTop) {\n    var doc = element.ownerDocument;\n\n    if (_isViewportScrollElement(element, doc)) {\n      doc.body.scrollTop = doc.documentElement.scrollTop = newTop;\n    } else {\n      element.scrollTop = newTop;\n    }\n  },\n\n  /**\n   * @param {DOMElement} element\n   * @return {number}\n   */\n  getLeft: function getLeft(element) {\n    var doc = element.ownerDocument;\n    return _isViewportScrollElement(element, doc) ? doc.body.scrollLeft || doc.documentElement.scrollLeft : element.scrollLeft;\n  },\n\n  /**\n   * @param {DOMElement} element\n   * @param {number} newLeft\n   */\n  setLeft: function setLeft(element, newLeft) {\n    var doc = element.ownerDocument;\n\n    if (_isViewportScrollElement(element, doc)) {\n      doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n    } else {\n      element.scrollLeft = newLeft;\n    }\n  }\n};\nmodule.exports = Scroll;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` backward within\n * the selected block. If the selection will go beyond the start of the block,\n * move focus to the end of the previous block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionBackward(editorState, maxDistance) {\n  var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n  process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionBackward should only be called with a collapsed SelectionState') : void 0;\n  var content = editorState.getCurrentContent();\n  var key = selection.getStartKey();\n  var offset = selection.getStartOffset();\n  var focusKey = key;\n  var focusOffset = 0;\n\n  if (maxDistance > offset) {\n    var keyBefore = content.getKeyBefore(key);\n\n    if (keyBefore == null) {\n      focusKey = key;\n    } else {\n      focusKey = keyBefore;\n      var blockBefore = content.getBlockForKey(keyBefore);\n      focusOffset = blockBefore.getText().length;\n    }\n  } else {\n    focusOffset = offset - maxDistance;\n  }\n\n  return selection.merge({\n    focusKey: focusKey,\n    focusOffset: focusOffset,\n    isBackward: true\n  });\n}\n\nmodule.exports = moveSelectionBackward;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  var argIndex = 0;\n  var message = 'Warning: ' + format.replace(/%s/g, function () {\n    return args[argIndex++];\n  });\n\n  if (typeof console !== 'undefined') {\n    console.error(message);\n  }\n\n  try {\n    // --- Welcome to debugging React ---\n    // This error was thrown as a convenience so that you can use this stack\n    // to find the callsite that caused this warning to fire.\n    throw new Error(message);\n  } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n  if (format === undefined) {\n    throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n  }\n\n  if (!condition) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n      args[_key2 - 2] = arguments[_key2];\n    }\n\n    printWarning.apply(void 0, [format].concat(args));\n  }\n} : emptyFunction;\nmodule.exports = warning;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isSoftNewlineEvent = require(\"./isSoftNewlineEvent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\nvar KeyBindingUtil = {\n  /**\n   * Check whether the ctrlKey modifier is *not* being used in conjunction with\n   * the altKey modifier. If they are combined, the result is an `altGraph`\n   * key modifier, which should not be handled by this set of key bindings.\n   */\n  isCtrlKeyCommand: function isCtrlKeyCommand(e) {\n    return !!e.ctrlKey && !e.altKey;\n  },\n  isOptionKeyCommand: function isOptionKeyCommand(e) {\n    return isOSX && e.altKey;\n  },\n  usesMacOSHeuristics: function usesMacOSHeuristics() {\n    return isOSX;\n  },\n  hasCommandModifier: function hasCommandModifier(e) {\n    return isOSX ? !!e.metaKey && !e.altKey : KeyBindingUtil.isCtrlKeyCommand(e);\n  },\n  isSoftNewlineEvent: isSoftNewlineEvent\n};\nmodule.exports = KeyBindingUtil;","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar TableContext = /*#__PURE__*/React.createContext();\n\nif (process.env.NODE_ENV !== 'production') {\n  TableContext.displayName = 'TableContext';\n}\n\nexport default TableContext;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n  var newKeysRef = {}; // we keep track of root blocks in order to update subsequent sibling links\n\n  var lastRootBlock;\n  return OrderedMap(blockMap.withMutations(function (blockMapState) {\n    blockMapState.forEach(function (block, index) {\n      var oldKey = block.getKey();\n      var nextKey = block.getNextSiblingKey();\n      var prevKey = block.getPrevSiblingKey();\n      var childrenKeys = block.getChildKeys();\n      var parentKey = block.getParentKey(); // new key that we will use to build linking\n\n      var key = generateRandomKey(); // we will add it here to re-use it later\n\n      newKeysRef[oldKey] = key;\n\n      if (nextKey) {\n        var nextBlock = blockMapState.get(nextKey);\n\n        if (nextBlock) {\n          blockMapState.setIn([nextKey, 'prevSibling'], key);\n        } else {\n          // this can happen when generating random keys for fragments\n          blockMapState.setIn([oldKey, 'nextSibling'], null);\n        }\n      }\n\n      if (prevKey) {\n        var prevBlock = blockMapState.get(prevKey);\n\n        if (prevBlock) {\n          blockMapState.setIn([prevKey, 'nextSibling'], key);\n        } else {\n          // this can happen when generating random keys for fragments\n          blockMapState.setIn([oldKey, 'prevSibling'], null);\n        }\n      }\n\n      if (parentKey && blockMapState.get(parentKey)) {\n        var parentBlock = blockMapState.get(parentKey);\n        var parentChildrenList = parentBlock.getChildKeys();\n        blockMapState.setIn([parentKey, 'children'], parentChildrenList.set(parentChildrenList.indexOf(block.getKey()), key));\n      } else {\n        // blocks will then be treated as root block nodes\n        blockMapState.setIn([oldKey, 'parent'], null);\n\n        if (lastRootBlock) {\n          blockMapState.setIn([lastRootBlock.getKey(), 'nextSibling'], key);\n          blockMapState.setIn([oldKey, 'prevSibling'], newKeysRef[lastRootBlock.getKey()]);\n        }\n\n        lastRootBlock = blockMapState.get(oldKey);\n      }\n\n      childrenKeys.forEach(function (childKey) {\n        var childBlock = blockMapState.get(childKey);\n\n        if (childBlock) {\n          blockMapState.setIn([childKey, 'parent'], key);\n        } else {\n          blockMapState.setIn([oldKey, 'children'], block.getChildKeys().filter(function (child) {\n            return child !== childKey;\n          }));\n        }\n      });\n    });\n  }).toArray().map(function (block) {\n    return [newKeysRef[block.getKey()], block.set('key', newKeysRef[block.getKey()])];\n  }));\n};\n\nvar randomizeContentBlockKeys = function randomizeContentBlockKeys(blockMap) {\n  return OrderedMap(blockMap.toArray().map(function (block) {\n    var key = generateRandomKey();\n    return [key, block.set('key', key)];\n  }));\n};\n\nvar randomizeBlockMapKeys = function randomizeBlockMapKeys(blockMap) {\n  var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n\n  if (!isTreeBasedBlockMap) {\n    return randomizeContentBlockKeys(blockMap);\n  }\n\n  return randomizeContentBlockNodeKeys(blockMap);\n};\n\nmodule.exports = randomizeBlockMapKeys;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n  var blockMap = contentState.getBlockMap();\n  var entityMap = contentState.getEntityMap();\n  var updatedBlocks = {};\n  var startKey = selectionState.getStartKey();\n  var startOffset = selectionState.getStartOffset();\n  var startBlock = blockMap.get(startKey);\n  var updatedStart = removeForBlock(entityMap, startBlock, startOffset);\n\n  if (updatedStart !== startBlock) {\n    updatedBlocks[startKey] = updatedStart;\n  }\n\n  var endKey = selectionState.getEndKey();\n  var endOffset = selectionState.getEndOffset();\n  var endBlock = blockMap.get(endKey);\n\n  if (startKey === endKey) {\n    endBlock = updatedStart;\n  }\n\n  var updatedEnd = removeForBlock(entityMap, endBlock, endOffset);\n\n  if (updatedEnd !== endBlock) {\n    updatedBlocks[endKey] = updatedEnd;\n  }\n\n  if (!Object.keys(updatedBlocks).length) {\n    return contentState.set('selectionAfter', selectionState);\n  }\n\n  return contentState.merge({\n    blockMap: blockMap.merge(updatedBlocks),\n    selectionAfter: selectionState\n  });\n}\n/**\n * Given a list of characters and an offset that is in the middle of an entity,\n * returns the start and end of the entity that is overlapping the offset.\n * Note: This method requires that the offset be in an entity range.\n */\n\n\nfunction getRemovalRange(characters, entityKey, offset) {\n  var removalRange; // Iterates through a list looking for ranges of matching items\n  // based on the 'isEqual' callback.\n  // Then instead of returning the result, call the 'found' callback\n  // with each range.\n  // Then filters those ranges based on the 'filter' callback\n  //\n  // Here we use it to find ranges of characters with the same entity key.\n\n  findRangesImmutable(characters, // the list to iterate through\n  function (a, b) {\n    return a.getEntity() === b.getEntity();\n  }, // 'isEqual' callback\n  function (element) {\n    return element.getEntity() === entityKey;\n  }, // 'filter' callback\n  function (start, end) {\n    // 'found' callback\n    if (start <= offset && end >= offset) {\n      // this entity overlaps the offset index\n      removalRange = {\n        start: start,\n        end: end\n      };\n    }\n  });\n  !(typeof removalRange === 'object') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Removal range must exist within character list.') : invariant(false) : void 0;\n  return removalRange;\n}\n\nfunction removeForBlock(entityMap, block, offset) {\n  var chars = block.getCharacterList();\n  var charBefore = offset > 0 ? chars.get(offset - 1) : undefined;\n  var charAfter = offset < chars.count() ? chars.get(offset) : undefined;\n  var entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;\n  var entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;\n\n  if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {\n    var entity = entityMap.__get(entityAfterCursor);\n\n    if (entity.getMutability() !== 'MUTABLE') {\n      var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n          start = _getRemovalRange.start,\n          end = _getRemovalRange.end;\n\n      var current;\n\n      while (start < end) {\n        current = chars.get(start);\n        chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n        start++;\n      }\n\n      return block.set('characterList', chars);\n    }\n  }\n\n  return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Maintain persistence for target list when appending and prepending.\n */\nfunction insertIntoList(targetListArg, toInsert, offset) {\n  var targetList = targetListArg;\n\n  if (offset === targetList.count()) {\n    toInsert.forEach(function (c) {\n      targetList = targetList.push(c);\n    });\n  } else if (offset === 0) {\n    toInsert.reverse().forEach(function (c) {\n      targetList = targetList.unshift(c);\n    });\n  } else {\n    var head = targetList.slice(0, offset);\n    var tail = targetList.slice(offset);\n    targetList = head.concat(toInsert, tail).toList();\n  }\n\n  return targetList;\n}\n\nmodule.exports = insertIntoList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar Map = Immutable.Map;\n\nfunction modifyBlockForContentState(contentState, selectionState, operation) {\n  var startKey = selectionState.getStartKey();\n  var endKey = selectionState.getEndKey();\n  var blockMap = contentState.getBlockMap();\n  var newBlocks = blockMap.toSeq().skipUntil(function (_, k) {\n    return k === startKey;\n  }).takeUntil(function (_, k) {\n    return k === endKey;\n  }).concat(Map([[endKey, blockMap.get(endKey)]])).map(operation);\n  return contentState.merge({\n    blockMap: blockMap.merge(newBlocks),\n    selectionBefore: selectionState,\n    selectionAfter: selectionState\n  });\n}\n\nmodule.exports = modifyBlockForContentState;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = function getNextDelimiterBlockKey(block, blockMap) {\n  var isExperimentalTreeBlock = block instanceof ContentBlockNode;\n\n  if (!isExperimentalTreeBlock) {\n    return null;\n  }\n\n  var nextSiblingKey = block.getNextSiblingKey();\n\n  if (nextSiblingKey) {\n    return nextSiblingKey;\n  }\n\n  var parent = block.getParentKey();\n\n  if (!parent) {\n    return null;\n  }\n\n  var nextNonDescendantBlock = blockMap.get(parent);\n\n  while (nextNonDescendantBlock && !nextNonDescendantBlock.getNextSiblingKey()) {\n    var parentKey = nextNonDescendantBlock.getParentKey();\n    nextNonDescendantBlock = parentKey ? blockMap.get(parentKey) : null;\n  }\n\n  if (!nextNonDescendantBlock) {\n    return null;\n  }\n\n  return nextNonDescendantBlock.getNextSiblingKey();\n};\n\nmodule.exports = getNextDelimiterBlockKey;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * \n * @typechecks\n * @format\n */\n\n/**\n * Retrieve an object's own values as an array. If you want the values in the\n * protoype chain, too, use getObjectValuesIncludingPrototype.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array}     The object's values.\n */\nfunction getOwnObjectValues(obj) {\n  return Object.keys(obj).map(function (key) {\n    return obj[key];\n  });\n}\n\nmodule.exports = getOwnObjectValues;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @legacyServerCallableInstance\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar DraftEntityInstanceRecord = Record({\n  type: 'TOKEN',\n  mutability: 'IMMUTABLE',\n  data: Object\n});\n/**\n * An instance of a document entity, consisting of a `type` and relevant\n * `data`, metadata about the entity.\n *\n * For instance, a \"link\" entity might provide a URI, and a \"mention\"\n * entity might provide the mentioned user's ID. These pieces of data\n * may be used when rendering the entity as part of a ContentBlock DOM\n * representation. For a link, the data would be used as an href for\n * the rendered anchor. For a mention, the ID could be used to retrieve\n * a hovercard.\n */\n\nvar DraftEntityInstance = /*#__PURE__*/function (_DraftEntityInstanceR) {\n  _inheritsLoose(DraftEntityInstance, _DraftEntityInstanceR);\n\n  function DraftEntityInstance() {\n    return _DraftEntityInstanceR.apply(this, arguments) || this;\n  }\n\n  var _proto = DraftEntityInstance.prototype;\n\n  _proto.getType = function getType() {\n    return this.get('type');\n  };\n\n  _proto.getMutability = function getMutability() {\n    return this.get('mutability');\n  };\n\n  _proto.getData = function getData() {\n    return this.get('data');\n  };\n\n  return DraftEntityInstance;\n}(DraftEntityInstanceRecord);\n\nmodule.exports = DraftEntityInstance;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n\nfunction sanitizeDraftText(input) {\n  return input.replace(REGEX_BLOCK_DELIMITER, '');\n}\n\nmodule.exports = sanitizeDraftText;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nmodule.exports = {\n  BOLD: {\n    fontWeight: 'bold'\n  },\n  CODE: {\n    fontFamily: 'monospace',\n    wordWrap: 'break-word'\n  },\n  ITALIC: {\n    fontStyle: 'italic'\n  },\n  STRIKETHROUGH: {\n    textDecoration: 'line-through'\n  },\n  UNDERLINE: {\n    textDecoration: 'underline'\n  }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n/**\n * Get offset key from a node or it's child nodes. Return the first offset key\n * found on the DOM tree of given node.\n */\n\nvar isElement = require(\"./isElement\");\n\nfunction getSelectionOffsetKeyForNode(node) {\n  if (isElement(node)) {\n    var castedNode = node;\n    var offsetKey = castedNode.getAttribute('data-offset-key');\n\n    if (offsetKey) {\n      return offsetKey;\n    }\n\n    for (var ii = 0; ii < castedNode.childNodes.length; ii++) {\n      var childOffsetKey = getSelectionOffsetKeyForNode(castedNode.childNodes[ii]);\n\n      if (childOffsetKey) {\n        return childOffsetKey;\n      }\n    }\n  }\n\n  return null;\n}\n\nmodule.exports = getSelectionOffsetKeyForNode;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getWindowForNode(node) {\n  if (!node || !node.ownerDocument || !node.ownerDocument.defaultView) {\n    return window;\n  }\n\n  return node.ownerDocument.defaultView;\n}\n\nmodule.exports = getWindowForNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nfunction editOnSelect(editor) {\n  if (editor._blockSelectEvents || editor._latestEditorState !== editor.props.editorState) {\n    if (editor._blockSelectEvents) {\n      var _editorState = editor.props.editorState;\n\n      var selectionState = _editorState.getSelection();\n\n      DraftJsDebugLogging.logBlockedSelectionEvent({\n        // For now I don't think we need any other info\n        anonymizedDom: 'N/A',\n        extraParams: JSON.stringify({\n          stacktrace: new Error().stack\n        }),\n        selectionState: JSON.stringify(selectionState.toJS())\n      });\n    }\n\n    return;\n  }\n\n  var editorState = editor.props.editorState;\n  var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n  var updatedSelectionState = documentSelection.selectionState;\n\n  if (updatedSelectionState !== editorState.getSelection()) {\n    if (documentSelection.needsRecovery) {\n      editorState = EditorState.forceSelection(editorState, updatedSelectionState);\n    } else {\n      editorState = EditorState.acceptSelection(editorState, updatedSelectionState);\n    }\n\n    editor.update(editorState);\n  }\n}\n\nmodule.exports = editOnSelect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n  logBlockedSelectionEvent: function logBlockedSelectionEvent() {\n    return null;\n  },\n  logSelectionStateFailure: function logSelectionStateFailure() {\n    return null;\n  }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nfunction getContentEditableContainer(editor) {\n  var editorNode = editor.editorContainer;\n  !editorNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing editorNode') : invariant(false) : void 0;\n  !isHTMLElement(editorNode.firstChild) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode.firstChild is not an HTMLElement') : invariant(false) : void 0;\n  var htmlElement = editorNode.firstChild;\n  return htmlElement;\n}\n\nmodule.exports = getContentEditableContainer;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\n\n\nfunction getDraftEditorSelection(editorState, root) {\n  var selection = root.ownerDocument.defaultView.getSelection();\n  var anchorNode = selection.anchorNode,\n      anchorOffset = selection.anchorOffset,\n      focusNode = selection.focusNode,\n      focusOffset = selection.focusOffset,\n      rangeCount = selection.rangeCount;\n\n  if ( // No active selection.\n  rangeCount === 0 || // No selection, ever. As in, the user hasn't selected anything since\n  // opening the document.\n  anchorNode == null || focusNode == null) {\n    return {\n      selectionState: editorState.getSelection().set('hasFocus', false),\n      needsRecovery: false\n    };\n  }\n\n  return getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n\nmodule.exports = getDraftEditorSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\nfunction getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset) {\n  var anchorIsTextNode = anchorNode.nodeType === Node.TEXT_NODE;\n  var focusIsTextNode = focusNode.nodeType === Node.TEXT_NODE; // If the selection range lies only on text nodes, the task is simple.\n  // Find the nearest offset-aware elements and use the\n  // offset values supplied by the selection range.\n\n  if (anchorIsTextNode && focusIsTextNode) {\n    return {\n      selectionState: getUpdatedSelectionState(editorState, nullthrows(findAncestorOffsetKey(anchorNode)), anchorOffset, nullthrows(findAncestorOffsetKey(focusNode)), focusOffset),\n      needsRecovery: false\n    };\n  }\n\n  var anchorPoint = null;\n  var focusPoint = null;\n  var needsRecovery = true; // An element is selected. Convert this selection range into leaf offset\n  // keys and offset values for consumption at the component level. This\n  // is common in Firefox, where select-all and triple click behavior leads\n  // to entire elements being selected.\n  //\n  // Note that we use the `needsRecovery` parameter in the callback here. This\n  // is because when certain elements are selected, the behavior for subsequent\n  // cursor movement (e.g. via arrow keys) is uncertain and may not match\n  // expectations at the component level. For example, if an entire <div> is\n  // selected and the user presses the right arrow, Firefox keeps the selection\n  // on the <div>. If we allow subsequent keypresses to insert characters\n  // natively, they will be inserted into a browser-created text node to the\n  // right of that <div>. This is obviously undesirable.\n  //\n  // With the `needsRecovery` flag, we inform the caller that it is responsible\n  // for manually setting the selection state on the rendered document to\n  // ensure proper selection state maintenance.\n\n  if (anchorIsTextNode) {\n    anchorPoint = {\n      key: nullthrows(findAncestorOffsetKey(anchorNode)),\n      offset: anchorOffset\n    };\n    focusPoint = getPointForNonTextNode(root, focusNode, focusOffset);\n  } else if (focusIsTextNode) {\n    focusPoint = {\n      key: nullthrows(findAncestorOffsetKey(focusNode)),\n      offset: focusOffset\n    };\n    anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n  } else {\n    anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n    focusPoint = getPointForNonTextNode(root, focusNode, focusOffset); // If the selection is collapsed on an empty block, don't force recovery.\n    // This way, on arrow key selection changes, the browser can move the\n    // cursor from a non-zero offset on one block, through empty blocks,\n    // to a matching non-zero offset on other text blocks.\n\n    if (anchorNode === focusNode && anchorOffset === focusOffset) {\n      needsRecovery = !!anchorNode.firstChild && anchorNode.firstChild.nodeName !== 'BR';\n    }\n  }\n\n  return {\n    selectionState: getUpdatedSelectionState(editorState, anchorPoint.key, anchorPoint.offset, focusPoint.key, focusPoint.offset),\n    needsRecovery: needsRecovery\n  };\n}\n/**\n * Identify the first leaf descendant for the given node.\n */\n\n\nfunction getFirstLeaf(node) {\n  while (node.firstChild && ( // data-blocks has no offset\n  isElement(node.firstChild) && node.firstChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.firstChild))) {\n    node = node.firstChild;\n  }\n\n  return node;\n}\n/**\n * Identify the last leaf descendant for the given node.\n */\n\n\nfunction getLastLeaf(node) {\n  while (node.lastChild && ( // data-blocks has no offset\n  isElement(node.lastChild) && node.lastChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.lastChild))) {\n    node = node.lastChild;\n  }\n\n  return node;\n}\n\nfunction getPointForNonTextNode(editorRoot, startNode, childOffset) {\n  var node = startNode;\n  var offsetKey = findAncestorOffsetKey(node);\n  !(offsetKey != null || editorRoot && (editorRoot === node || editorRoot.firstChild === node)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown node in selection range.') : invariant(false) : void 0; // If the editorRoot is the selection, step downward into the content\n  // wrapper.\n\n  if (editorRoot === node) {\n    node = node.firstChild;\n    !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents node.') : invariant(false) : void 0;\n    var castedNode = node; // assignment only added for flow :/\n    // otherwise it throws in line 200 saying that node can be null or undefined\n\n    node = castedNode;\n    !(node.getAttribute('data-contents') === 'true') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents structure.') : invariant(false) : void 0;\n\n    if (childOffset > 0) {\n      childOffset = node.childNodes.length;\n    }\n  } // If the child offset is zero and we have an offset key, we're done.\n  // If there's no offset key because the entire editor is selected,\n  // find the leftmost (\"first\") leaf in the tree and use that as the offset\n  // key.\n\n\n  if (childOffset === 0) {\n    var key = null;\n\n    if (offsetKey != null) {\n      key = offsetKey;\n    } else {\n      var firstLeaf = getFirstLeaf(node);\n      key = nullthrows(getSelectionOffsetKeyForNode(firstLeaf));\n    }\n\n    return {\n      key: key,\n      offset: 0\n    };\n  }\n\n  var nodeBeforeCursor = node.childNodes[childOffset - 1];\n  var leafKey = null;\n  var textLength = null;\n\n  if (!getSelectionOffsetKeyForNode(nodeBeforeCursor)) {\n    // Our target node may be a leaf or a text node, in which case we're\n    // already where we want to be and can just use the child's length as\n    // our offset.\n    leafKey = nullthrows(offsetKey);\n    textLength = getTextContentLength(nodeBeforeCursor);\n  } else {\n    // Otherwise, we'll look at the child to the left of the cursor and find\n    // the last leaf node in its subtree.\n    var lastLeaf = getLastLeaf(nodeBeforeCursor);\n    leafKey = nullthrows(getSelectionOffsetKeyForNode(lastLeaf));\n    textLength = getTextContentLength(lastLeaf);\n  }\n\n  return {\n    key: leafKey,\n    offset: textLength\n  };\n}\n/**\n * Return the length of a node's textContent, regarding single newline\n * characters as zero-length. This allows us to avoid problems with identifying\n * the correct selection offset for empty blocks in IE, in which we\n * render newlines instead of break tags.\n */\n\n\nfunction getTextContentLength(node) {\n  var textContent = node.textContent;\n  return textContent === '\\n' ? 0 : textContent.length;\n}\n\nmodule.exports = getDraftEditorSelectionWithNodes;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nfunction getUpdatedSelectionState(editorState, anchorKey, anchorOffset, focusKey, focusOffset) {\n  var selection = nullthrows(editorState.getSelection());\n\n  if (!anchorKey || !focusKey) {\n    // If we cannot make sense of the updated selection state, stick to the current one.\n    if (process.env.NODE_ENV !== \"production\") {\n      /* eslint-disable-next-line */\n      console.warn('Invalid selection state.', arguments, editorState.toJS());\n    }\n\n    return selection;\n  }\n\n  var anchorPath = DraftOffsetKey.decode(anchorKey);\n  var anchorBlockKey = anchorPath.blockKey;\n  var anchorLeafBlockTree = editorState.getBlockTree(anchorBlockKey);\n  var anchorLeaf = anchorLeafBlockTree && anchorLeafBlockTree.getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);\n  var focusPath = DraftOffsetKey.decode(focusKey);\n  var focusBlockKey = focusPath.blockKey;\n  var focusLeafBlockTree = editorState.getBlockTree(focusBlockKey);\n  var focusLeaf = focusLeafBlockTree && focusLeafBlockTree.getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);\n\n  if (!anchorLeaf || !focusLeaf) {\n    // If we cannot make sense of the updated selection state, stick to the current one.\n    if (process.env.NODE_ENV !== \"production\") {\n      /* eslint-disable-next-line */\n      console.warn('Invalid selection state.', arguments, editorState.toJS());\n    }\n\n    return selection;\n  }\n\n  var anchorLeafStart = anchorLeaf.get('start');\n  var focusLeafStart = focusLeaf.get('start');\n  var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;\n  var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;\n  var areEqual = selection.getAnchorKey() === anchorBlockKey && selection.getAnchorOffset() === anchorBlockOffset && selection.getFocusKey() === focusBlockKey && selection.getFocusOffset() === focusBlockOffset;\n\n  if (areEqual) {\n    return selection;\n  }\n\n  var isBackward = false;\n\n  if (anchorBlockKey === focusBlockKey) {\n    var anchorLeafEnd = anchorLeaf.get('end');\n    var focusLeafEnd = focusLeaf.get('end');\n\n    if (focusLeafStart === anchorLeafStart && focusLeafEnd === anchorLeafEnd) {\n      isBackward = focusOffset < anchorOffset;\n    } else {\n      isBackward = focusLeafStart < anchorLeafStart;\n    }\n  } else {\n    var startKey = editorState.getCurrentContent().getBlockMap().keySeq().skipUntil(function (v) {\n      return v === anchorBlockKey || v === focusBlockKey;\n    }).first();\n    isBackward = startKey === focusBlockKey;\n  }\n\n  return selection.merge({\n    anchorKey: anchorBlockKey,\n    anchorOffset: anchorBlockOffset,\n    focusKey: focusBlockKey,\n    focusOffset: focusBlockOffset,\n    isBackward: isBackward\n  });\n}\n\nmodule.exports = getUpdatedSelectionState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Provides utilities for handling draftjs keys.\n *\n * @emails oncall+draft_js\n * \n * @format\n */\n'use strict';\n\nfunction notEmptyKey(key) {\n  return key != null && key != '';\n}\n\nmodule.exports = {\n  notEmptyKey: notEmptyKey\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorTextNode = require(\"./DraftEditorTextNode.react\");\n\nvar React = require(\"react\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar setDraftEditorSelection = require(\"./setDraftEditorSelection\").setDraftEditorSelection;\n\n/**\n * All leaf nodes in the editor are spans with single text nodes. Leaf\n * elements are styled based on the merging of an optional custom style map\n * and a default style map.\n *\n * `DraftEditorLeaf` also provides a wrapper for calling into the imperative\n * DOM Selection API. In this way, top-level components can declaratively\n * maintain the selection state.\n */\nvar DraftEditorLeaf = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorLeaf, _React$Component);\n\n  function DraftEditorLeaf() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"leaf\", void 0);\n\n    return _this;\n  }\n\n  var _proto = DraftEditorLeaf.prototype;\n\n  _proto._setSelection = function _setSelection() {\n    var selection = this.props.selection; // If selection state is irrelevant to the parent block, no-op.\n\n    if (selection == null || !selection.getHasFocus()) {\n      return;\n    }\n\n    var _this$props = this.props,\n        block = _this$props.block,\n        start = _this$props.start,\n        text = _this$props.text;\n    var blockKey = block.getKey();\n    var end = start + text.length;\n\n    if (!selection.hasEdgeWithin(blockKey, start, end)) {\n      return;\n    } // Determine the appropriate target node for selection. If the child\n    // is not a text node, it is a <br /> spacer. In this case, use the\n    // <span> itself as the selection target.\n\n\n    var node = this.leaf;\n    !node ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing node') : invariant(false) : void 0;\n    var child = node.firstChild;\n    !child ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing child') : invariant(false) : void 0;\n    var targetNode;\n\n    if (child.nodeType === Node.TEXT_NODE) {\n      targetNode = child;\n    } else if (isHTMLBRElement(child)) {\n      targetNode = node;\n    } else {\n      targetNode = child.firstChild;\n      !targetNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing targetNode') : invariant(false) : void 0;\n    }\n\n    setDraftEditorSelection(selection, targetNode, blockKey, start, end);\n  };\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    var leafNode = this.leaf;\n    !leafNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing leafNode') : invariant(false) : void 0;\n    var shouldUpdate = leafNode.textContent !== nextProps.text || nextProps.styleSet !== this.props.styleSet || nextProps.forceSelection;\n    return shouldUpdate;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this._setSelection();\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._setSelection();\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var block = this.props.block;\n    var text = this.props.text; // If the leaf is at the end of its block and ends in a soft newline, append\n    // an extra line feed character. Browsers collapse trailing newline\n    // characters, which leaves the cursor in the wrong place after a\n    // shift+enter. The extra character repairs this.\n\n    if (text.endsWith('\\n') && this.props.isLast) {\n      text += '\\n';\n    }\n\n    var _this$props2 = this.props,\n        customStyleMap = _this$props2.customStyleMap,\n        customStyleFn = _this$props2.customStyleFn,\n        offsetKey = _this$props2.offsetKey,\n        styleSet = _this$props2.styleSet;\n    var styleObj = styleSet.reduce(function (map, styleName) {\n      var mergedStyles = {};\n      var style = customStyleMap[styleName];\n\n      if (style !== undefined && map.textDecoration !== style.textDecoration) {\n        // .trim() is necessary for IE9/10/11 and Edge\n        mergedStyles.textDecoration = [map.textDecoration, style.textDecoration].join(' ').trim();\n      }\n\n      return _assign(map, style, mergedStyles);\n    }, {});\n\n    if (customStyleFn) {\n      var newStyles = customStyleFn(styleSet, block);\n      styleObj = _assign(styleObj, newStyles);\n    }\n\n    return React.createElement(\"span\", {\n      \"data-offset-key\": offsetKey,\n      ref: function ref(_ref) {\n        return _this2.leaf = _ref;\n      },\n      style: styleObj\n    }, React.createElement(DraftEditorTextNode, null, text));\n  };\n\n  return DraftEditorLeaf;\n}(React.Component);\n\nmodule.exports = DraftEditorLeaf;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLBRElement(node) {\n  if (!node || !node.ownerDocument) {\n    return false;\n  }\n\n  return isElement(node) && node.nodeName === 'BR';\n}\n\nmodule.exports = isHTMLBRElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n  initODS: function initODS() {},\n  handleExtensionCausedError: function handleExtensionCausedError() {}\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n  doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n  if (typeof doc === 'undefined') {\n    return null;\n  }\n\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\n\nmodule.exports = getActiveElement;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getElementRect = require(\"./getElementRect\");\n/**\n * Gets an element's position in pixels relative to the viewport. The returned\n * object represents the position of the element's top left corner.\n *\n * @param {DOMElement} element\n * @return {object}\n */\n\n\nfunction getElementPosition(element) {\n  var rect = getElementRect(element);\n  return {\n    x: rect.left,\n    y: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n}\n\nmodule.exports = getElementPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks\n */\nfunction getViewportWidth() {\n  var width;\n\n  if (document.documentElement) {\n    width = document.documentElement.clientWidth;\n  }\n\n  if (!width && document.body) {\n    width = document.body.clientWidth;\n  }\n\n  return width || 0;\n}\n\nfunction getViewportHeight() {\n  var height;\n\n  if (document.documentElement) {\n    height = document.documentElement.clientHeight;\n  }\n\n  if (!height && document.body) {\n    height = document.body.clientHeight;\n  }\n\n  return height || 0;\n}\n/**\n * Gets the viewport dimensions including any scrollbars.\n */\n\n\nfunction getViewportDimensions() {\n  return {\n    width: window.innerWidth || getViewportWidth(),\n    height: window.innerHeight || getViewportHeight()\n  };\n}\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\n\n\ngetViewportDimensions.withoutScrollbars = function () {\n  return {\n    width: getViewportWidth(),\n    height: getViewportHeight()\n  };\n};\n\nmodule.exports = getViewportDimensions;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar SCROLL_BUFFER = 10;\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n  return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * The default block renderer for a `DraftEditor` component.\n *\n * A `DraftEditorBlock` is able to render a given `ContentBlock` to its\n * appropriate decorator and inline style components.\n */\n\n\nvar DraftEditorBlock = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DraftEditorBlock, _React$Component);\n\n  function DraftEditorBlock() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n    return _this;\n  }\n\n  var _proto = DraftEditorBlock.prototype;\n\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return this.props.block !== nextProps.block || this.props.tree !== nextProps.tree || this.props.direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection;\n  }\n  /**\n   * When a block is mounted and overlaps the selection state, we need to make\n   * sure that the cursor is visible to match native behavior. This may not\n   * be the case if the user has pressed `RETURN` or pasted some content, since\n   * programmatically creating these new blocks and setting the DOM selection\n   * will miss out on the browser natively scrolling to that position.\n   *\n   * To replicate native behavior, if the block overlaps the selection state\n   * on mount, force the scroll position. Check the scroll state of the scroll\n   * parent, and adjust it to align the entire block to the bottom of the\n   * scroll parent.\n   */\n  ;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (this.props.preventScroll) {\n      return;\n    }\n\n    var selection = this.props.selection;\n    var endKey = selection.getEndKey();\n\n    if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n      return;\n    }\n\n    var blockNode = this._node;\n\n    if (blockNode == null) {\n      return;\n    }\n\n    var scrollParent = Style.getScrollParent(blockNode);\n    var scrollPosition = getScrollPosition(scrollParent);\n    var scrollDelta;\n\n    if (scrollParent === window) {\n      var nodePosition = getElementPosition(blockNode);\n      var nodeBottom = nodePosition.y + nodePosition.height;\n      var viewportHeight = getViewportDimensions().height;\n      scrollDelta = nodeBottom - viewportHeight;\n\n      if (scrollDelta > 0) {\n        window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n      }\n    } else {\n      !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n      var blockBottom = blockNode.offsetHeight + blockNode.offsetTop;\n      var pOffset = scrollParent.offsetTop + scrollParent.offsetHeight;\n      var scrollBottom = pOffset + scrollPosition.y;\n      scrollDelta = blockBottom - scrollBottom;\n\n      if (scrollDelta > 0) {\n        Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n      }\n    }\n  };\n\n  _proto._renderChildren = function _renderChildren() {\n    var _this2 = this;\n\n    var block = this.props.block;\n    var blockKey = block.getKey();\n    var text = block.getText();\n    var lastLeafSet = this.props.tree.size - 1;\n    var hasSelection = isBlockOnSelectionEdge(this.props.selection, blockKey);\n    return this.props.tree.map(function (leafSet, ii) {\n      var leavesForLeafSet = leafSet.get('leaves'); // T44088704\n\n      if (leavesForLeafSet.size === 0) {\n        return null;\n      }\n\n      var lastLeaf = leavesForLeafSet.size - 1;\n      var leaves = leavesForLeafSet.map(function (leaf, jj) {\n        var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n        var start = leaf.get('start');\n        var end = leaf.get('end');\n        return React.createElement(DraftEditorLeaf, {\n          key: offsetKey,\n          offsetKey: offsetKey,\n          block: block,\n          start: start,\n          selection: hasSelection ? _this2.props.selection : null,\n          forceSelection: _this2.props.forceSelection,\n          text: text.slice(start, end),\n          styleSet: block.getInlineStyleAt(start),\n          customStyleMap: _this2.props.customStyleMap,\n          customStyleFn: _this2.props.customStyleFn,\n          isLast: ii === lastLeafSet && jj === lastLeaf\n        });\n      }).toArray();\n      var decoratorKey = leafSet.get('decoratorKey');\n\n      if (decoratorKey == null) {\n        return leaves;\n      }\n\n      if (!_this2.props.decorator) {\n        return leaves;\n      }\n\n      var decorator = nullthrows(_this2.props.decorator);\n      var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n\n      if (!DecoratorComponent) {\n        return leaves;\n      }\n\n      var decoratorProps = decorator.getPropsForKey(decoratorKey);\n      var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, ii, 0);\n      var start = leavesForLeafSet.first().get('start');\n      var end = leavesForLeafSet.last().get('end');\n      var decoratedText = text.slice(start, end);\n      var entityKey = block.getEntityAt(leafSet.get('start')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n      // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n      var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), _this2.props.direction);\n      var commonProps = {\n        contentState: _this2.props.contentState,\n        decoratedText: decoratedText,\n        dir: dir,\n        start: start,\n        end: end,\n        blockKey: blockKey,\n        entityKey: entityKey,\n        offsetKey: decoratorOffsetKey\n      };\n      return React.createElement(DecoratorComponent, _extends({}, decoratorProps, commonProps, {\n        key: decoratorOffsetKey\n      }), leaves);\n    }).toArray();\n  };\n\n  _proto.render = function render() {\n    var _this3 = this;\n\n    var _this$props = this.props,\n        direction = _this$props.direction,\n        offsetKey = _this$props.offsetKey;\n    var className = cx({\n      'public/DraftStyleDefault/block': true,\n      'public/DraftStyleDefault/ltr': direction === 'LTR',\n      'public/DraftStyleDefault/rtl': direction === 'RTL'\n    });\n    return React.createElement(\"div\", {\n      \"data-offset-key\": offsetKey,\n      className: className,\n      ref: function ref(_ref) {\n        return _this3._node = _ref;\n      }\n    }, this._renderChildren());\n  };\n\n  return DraftEditorBlock;\n}(React.Component);\n\nmodule.exports = DraftEditorBlock;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar PhotosMimeType = require(\"./PhotosMimeType\");\n\nvar createArrayFromMixed = require(\"./createArrayFromMixed\");\n\nvar emptyFunction = require(\"./emptyFunction\");\n\nvar CR_LF_REGEX = new RegExp(\"\\r\\n\", 'g');\nvar LF_ONLY = \"\\n\";\nvar RICH_TEXT_TYPES = {\n  'text/rtf': 1,\n  'text/html': 1\n};\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\n\nfunction getFileFromDataTransfer(item) {\n  if (item.kind == 'file') {\n    return item.getAsFile();\n  }\n}\n\nvar DataTransfer =\n/*#__PURE__*/\nfunction () {\n  /**\n   * @param {object} data\n   */\n  function DataTransfer(data) {\n    this.data = data; // Types could be DOMStringList or array\n\n    this.types = data.types ? createArrayFromMixed(data.types) : [];\n  }\n  /**\n   * Is this likely to be a rich text data transfer?\n   *\n   * @return {boolean}\n   */\n\n\n  var _proto = DataTransfer.prototype;\n\n  _proto.isRichText = function isRichText() {\n    // If HTML is available, treat this data as rich text. This way, we avoid\n    // using a pasted image if it is packaged with HTML -- this may occur with\n    // pastes from MS Word, for example.  However this is only rich text if\n    // there's accompanying text.\n    if (this.getHTML() && this.getText()) {\n      return true;\n    } // When an image is copied from a preview window, you end up with two\n    // DataTransferItems one of which is a file's metadata as text.  Skip those.\n\n\n    if (this.isImage()) {\n      return false;\n    }\n\n    return this.types.some(function (type) {\n      return RICH_TEXT_TYPES[type];\n    });\n  };\n  /**\n   * Get raw text.\n   *\n   * @return {?string}\n   */\n\n\n  _proto.getText = function getText() {\n    var text;\n\n    if (this.data.getData) {\n      if (!this.types.length) {\n        text = this.data.getData('Text');\n      } else if (this.types.indexOf('text/plain') != -1) {\n        text = this.data.getData('text/plain');\n      }\n    }\n\n    return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n  };\n  /**\n   * Get HTML paste data\n   *\n   * @return {?string}\n   */\n\n\n  _proto.getHTML = function getHTML() {\n    if (this.data.getData) {\n      if (!this.types.length) {\n        return this.data.getData('Text');\n      } else if (this.types.indexOf('text/html') != -1) {\n        return this.data.getData('text/html');\n      }\n    }\n  };\n  /**\n   * Is this a link data transfer?\n   *\n   * @return {boolean}\n   */\n\n\n  _proto.isLink = function isLink() {\n    return this.types.some(function (type) {\n      return type.indexOf('Url') != -1 || type.indexOf('text/uri-list') != -1 || type.indexOf('text/x-moz-url');\n    });\n  };\n  /**\n   * Get a link url.\n   *\n   * @return {?string}\n   */\n\n\n  _proto.getLink = function getLink() {\n    if (this.data.getData) {\n      if (this.types.indexOf('text/x-moz-url') != -1) {\n        var url = this.data.getData('text/x-moz-url').split('\\n');\n        return url[0];\n      }\n\n      return this.types.indexOf('text/uri-list') != -1 ? this.data.getData('text/uri-list') : this.data.getData('url');\n    }\n\n    return null;\n  };\n  /**\n   * Is this an image data transfer?\n   *\n   * @return {boolean}\n   */\n\n\n  _proto.isImage = function isImage() {\n    var isImage = this.types.some(function (type) {\n      // Firefox will have a type of application/x-moz-file for images during\n      // dragging\n      return type.indexOf('application/x-moz-file') != -1;\n    });\n\n    if (isImage) {\n      return true;\n    }\n\n    var items = this.getFiles();\n\n    for (var i = 0; i < items.length; i++) {\n      var type = items[i].type;\n\n      if (!PhotosMimeType.isImage(type)) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n\n  _proto.getCount = function getCount() {\n    if (this.data.hasOwnProperty('items')) {\n      return this.data.items.length;\n    } else if (this.data.hasOwnProperty('mozItemCount')) {\n      return this.data.mozItemCount;\n    } else if (this.data.files) {\n      return this.data.files.length;\n    }\n\n    return null;\n  };\n  /**\n   * Get files.\n   *\n   * @return {array}\n   */\n\n\n  _proto.getFiles = function getFiles() {\n    if (this.data.items) {\n      // createArrayFromMixed doesn't properly handle DataTransferItemLists.\n      return Array.prototype.slice.call(this.data.items).map(getFileFromDataTransfer).filter(emptyFunction.thatReturnsArgument);\n    } else if (this.data.files) {\n      return Array.prototype.slice.call(this.data.files);\n    } else {\n      return [];\n    }\n  };\n  /**\n   * Are there any files to fetch?\n   *\n   * @return {boolean}\n   */\n\n\n  _proto.hasFiles = function hasFiles() {\n    return this.getFiles().length > 0;\n  };\n\n  return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar TEXT_CLIPPING_REGEX = /\\.textClipping$/;\nvar TEXT_TYPES = {\n  'text/plain': true,\n  'text/html': true,\n  'text/rtf': true\n}; // Somewhat arbitrary upper bound on text size. Let's not lock up the browser.\n\nvar TEXT_SIZE_UPPER_BOUND = 5000;\n/**\n * Extract the text content from a file list.\n */\n\nfunction getTextContentFromFiles(files, callback) {\n  var readCount = 0;\n  var results = [];\n  files.forEach(function (\n  /*blob*/\n  file) {\n    readFile(file, function (\n    /*string*/\n    text) {\n      readCount++;\n      text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));\n\n      if (readCount == files.length) {\n        callback(results.join('\\r'));\n      }\n    });\n  });\n}\n/**\n * todo isaac: Do work to turn html/rtf into a content fragment.\n */\n\n\nfunction readFile(file, callback) {\n  if (!global.FileReader || file.type && !(file.type in TEXT_TYPES)) {\n    callback('');\n    return;\n  }\n\n  if (file.type === '') {\n    var _contents = ''; // Special-case text clippings, which have an empty type but include\n    // `.textClipping` in the file name. `readAsText` results in an empty\n    // string for text clippings, so we force the file name to serve\n    // as the text value for the file.\n\n    if (TEXT_CLIPPING_REGEX.test(file.name)) {\n      _contents = file.name.replace(TEXT_CLIPPING_REGEX, '');\n    }\n\n    callback(_contents);\n    return;\n  }\n\n  var reader = new FileReader();\n\n  reader.onload = function () {\n    var result = reader.result;\n    !(typeof result === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'We should be calling \"FileReader.readAsText\" which returns a string') : invariant(false) : void 0;\n    callback(result);\n  };\n\n  reader.onerror = function () {\n    callback('');\n  };\n\n  reader.readAsText(file);\n}\n\nmodule.exports = getTextContentFromFiles;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nfunction getFragmentFromSelection(editorState) {\n  var selectionState = editorState.getSelection();\n\n  if (selectionState.isCollapsed()) {\n    return null;\n  }\n\n  return getContentStateFragment(editorState.getCurrentContent(), selectionState);\n}\n\nmodule.exports = getFragmentFromSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the preceding\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainBackspace(editorState) {\n  var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n    var selection = strategyState.getSelection();\n    var content = strategyState.getCurrentContent();\n    var key = selection.getAnchorKey();\n    var offset = selection.getAnchorOffset();\n    var charBehind = content.getBlockForKey(key).getText()[offset - 1];\n    return moveSelectionBackward(strategyState, charBehind ? UnicodeUtils.getUTF16Length(charBehind, 0) : 1);\n  }, 'backward');\n\n  if (afterRemoval === editorState.getCurrentContent()) {\n    return editorState;\n  }\n\n  var selection = editorState.getSelection();\n  return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'backspace-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainBackspace;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isChrome = UserAgent.isBrowser('Chrome'); // In Chrome, the client rects will include the entire bounds of all nodes that\n// begin (have a start tag) within the selection, even if the selection does\n// not overlap the entire node. To resolve this, we split the range at each\n// start tag and join the client rects together.\n// https://code.google.com/p/chromium/issues/detail?id=324437\n\n/* eslint-disable consistent-return */\n\nfunction getRangeClientRectsChrome(range) {\n  var tempRange = range.cloneRange();\n  var clientRects = [];\n\n  for (var ancestor = range.endContainer; ancestor != null; ancestor = ancestor.parentNode) {\n    // If we've climbed up to the common ancestor, we can now use the\n    // original start point and stop climbing the tree.\n    var atCommonAncestor = ancestor === range.commonAncestorContainer;\n\n    if (atCommonAncestor) {\n      tempRange.setStart(range.startContainer, range.startOffset);\n    } else {\n      tempRange.setStart(tempRange.endContainer, 0);\n    }\n\n    var rects = Array.from(tempRange.getClientRects());\n    clientRects.push(rects);\n\n    if (atCommonAncestor) {\n      var _ref;\n\n      clientRects.reverse();\n      return (_ref = []).concat.apply(_ref, clientRects);\n    }\n\n    tempRange.setEndBefore(ancestor);\n  }\n\n  !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found an unexpected detached subtree when getting range client rects.') : invariant(false) : void 0;\n}\n/* eslint-enable consistent-return */\n\n/**\n * Like range.getClientRects() but normalizes for browser bugs.\n */\n\n\nvar getRangeClientRects = isChrome ? getRangeClientRectsChrome : function (range) {\n  return Array.from(range.getClientRects());\n};\nmodule.exports = getRangeClientRects;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar TokenizeUtil = require(\"fbjs/lib/TokenizeUtil\");\n\nvar punctuation = TokenizeUtil.getPunctuation(); // The apostrophe and curly single quotes behave in a curious way: when\n// surrounded on both sides by word characters, they behave as word chars; when\n// either neighbor is punctuation or an end of the string, they behave as\n// punctuation.\n\nvar CHAMELEON_CHARS = \"['\\u2018\\u2019]\"; // Remove the underscore, which should count as part of the removable word. The\n// \"chameleon chars\" also count as punctuation in this regex.\n\nvar WHITESPACE_AND_PUNCTUATION = '\\\\s|(?![_])' + punctuation;\nvar DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';\nvar DELETE_REGEX = new RegExp(DELETE_STRING);\nvar BACKSPACE_STRING = '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '$';\nvar BACKSPACE_REGEX = new RegExp(BACKSPACE_STRING);\n\nfunction getRemovableWord(text, isBackward) {\n  var matches = isBackward ? BACKSPACE_REGEX.exec(text) : DELETE_REGEX.exec(text);\n  return matches ? matches[0] : text;\n}\n\nvar DraftRemovableWord = {\n  getBackward: function getBackward(text) {\n    return getRemovableWord(text, true);\n  },\n  getForward: function getForward(text) {\n    return getRemovableWord(text, false);\n  }\n};\nmodule.exports = DraftRemovableWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` forward within\n * the selected block. If the selection will go beyond the end of the block,\n * move focus to the start of the next block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionForward(editorState, maxDistance) {\n  var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n  process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionForward should only be called with a collapsed SelectionState') : void 0;\n  var key = selection.getStartKey();\n  var offset = selection.getStartOffset();\n  var content = editorState.getCurrentContent();\n  var focusKey = key;\n  var focusOffset;\n  var block = content.getBlockForKey(key);\n\n  if (maxDistance > block.getText().length - offset) {\n    focusKey = content.getKeyAfter(key);\n    focusOffset = 0;\n  } else {\n    focusOffset = offset + maxDistance;\n  }\n\n  return selection.merge({\n    focusKey: focusKey,\n    focusOffset: focusOffset\n  });\n}\n\nmodule.exports = moveSelectionForward;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _knownListItemDepthCl;\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar URI = require(\"fbjs/lib/URI\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar _require = require(\"immutable\"),\n    List = _require.List,\n    Map = _require.Map,\n    OrderedSet = _require.OrderedSet;\n\nvar isHTMLAnchorElement = require(\"./isHTMLAnchorElement\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar isHTMLImageElement = require(\"./isHTMLImageElement\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar NBSP = '&nbsp;';\nvar SPACE = ' '; // used for replacing characters in HTML\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_LEADING_LF = new RegExp('^\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_CARRIAGE = new RegExp('&#13;?', 'g');\nvar REGEX_ZWS = new RegExp('&#8203;?', 'g'); // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n\nvar boldValues = ['bold', 'bolder', '500', '600', '700', '800', '900'];\nvar notBoldValues = ['light', 'lighter', 'normal', '100', '200', '300', '400'];\nvar anchorAttr = ['className', 'href', 'rel', 'target', 'title'];\nvar imgAttr = ['alt', 'className', 'height', 'src', 'width'];\nvar knownListItemDepthClasses = (_knownListItemDepthCl = {}, _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth0'), 0), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth1'), 1), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth2'), 2), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth3'), 3), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth4'), 4), _knownListItemDepthCl);\nvar HTMLTagToRawInlineStyleMap = Map({\n  b: 'BOLD',\n  code: 'CODE',\n  del: 'STRIKETHROUGH',\n  em: 'ITALIC',\n  i: 'ITALIC',\n  s: 'STRIKETHROUGH',\n  strike: 'STRIKETHROUGH',\n  strong: 'BOLD',\n  u: 'UNDERLINE',\n  mark: 'HIGHLIGHT'\n});\n\n/**\n * Build a mapping from HTML tags to draftjs block types\n * out of a BlockRenderMap.\n *\n * The BlockTypeMap for the default BlockRenderMap looks like this:\n *   Map({\n *     h1: 'header-one',\n *     h2: 'header-two',\n *     h3: 'header-three',\n *     h4: 'header-four',\n *     h5: 'header-five',\n *     h6: 'header-six',\n *     blockquote: 'blockquote',\n *     figure: 'atomic',\n *     pre: ['code-block'],\n *     div: 'unstyled',\n *     p: 'unstyled',\n *     li: ['ordered-list-item', 'unordered-list-item'],\n *   })\n */\nvar buildBlockTypeMap = function buildBlockTypeMap(blockRenderMap) {\n  var blockTypeMap = {};\n  blockRenderMap.mapKeys(function (blockType, desc) {\n    var elements = [desc.element];\n\n    if (desc.aliasedElements !== undefined) {\n      elements.push.apply(elements, desc.aliasedElements);\n    }\n\n    elements.forEach(function (element) {\n      if (blockTypeMap[element] === undefined) {\n        blockTypeMap[element] = blockType;\n      } else if (typeof blockTypeMap[element] === 'string') {\n        blockTypeMap[element] = [blockTypeMap[element], blockType];\n      } else {\n        blockTypeMap[element].push(blockType);\n      }\n    });\n  });\n  return Map(blockTypeMap);\n};\n\nvar detectInlineStyle = function detectInlineStyle(node) {\n  if (isHTMLElement(node)) {\n    var element = node; // Currently only used to detect preformatted inline code\n\n    if (element.style.fontFamily.includes('monospace')) {\n      return 'CODE';\n    }\n  }\n\n  return null;\n};\n/**\n * If we're pasting from one DraftEditor to another we can check to see if\n * existing list item depth classes are being used and preserve this style\n */\n\n\nvar getListItemDepth = function getListItemDepth(node) {\n  var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  Object.keys(knownListItemDepthClasses).some(function (depthClass) {\n    if (node.classList.contains(depthClass)) {\n      depth = knownListItemDepthClasses[depthClass];\n    }\n  });\n  return depth;\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible link.\n */\n\n\nvar isValidAnchor = function isValidAnchor(node) {\n  if (!isHTMLAnchorElement(node)) {\n    return false;\n  }\n\n  var anchorNode = node;\n\n  if (!anchorNode.href || anchorNode.protocol !== 'http:' && anchorNode.protocol !== 'https:' && anchorNode.protocol !== 'mailto:' && anchorNode.protocol !== 'tel:') {\n    return false;\n  }\n\n  try {\n    // Just checking whether we can actually create a URI\n    var _ = new URI(anchorNode.href);\n\n    return true; // We need our catch statements to have arguments, else\n    // UglifyJS (which we use for our OSS builds) will crash.\n    // eslint-disable-next-line fb-www/no-unused-catch-bindings\n  } catch (_) {\n    return false;\n  }\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible image.\n */\n\n\nvar isValidImage = function isValidImage(node) {\n  if (!isHTMLImageElement(node)) {\n    return false;\n  }\n\n  var imageNode = node;\n  return !!(imageNode.attributes.getNamedItem('src') && imageNode.attributes.getNamedItem('src').value);\n};\n/**\n * Try to guess the inline style of an HTML element based on its css\n * styles (font-weight, font-style and text-decoration).\n */\n\n\nvar styleFromNodeAttributes = function styleFromNodeAttributes(node, style) {\n  if (!isHTMLElement(node)) {\n    return style;\n  }\n\n  var htmlElement = node;\n  var fontWeight = htmlElement.style.fontWeight;\n  var fontStyle = htmlElement.style.fontStyle;\n  var textDecoration = htmlElement.style.textDecoration;\n  return style.withMutations(function (style) {\n    if (boldValues.indexOf(fontWeight) >= 0) {\n      style.add('BOLD');\n    } else if (notBoldValues.indexOf(fontWeight) >= 0) {\n      style.remove('BOLD');\n    }\n\n    if (fontStyle === 'italic') {\n      style.add('ITALIC');\n    } else if (fontStyle === 'normal') {\n      style.remove('ITALIC');\n    }\n\n    if (textDecoration === 'underline') {\n      style.add('UNDERLINE');\n    }\n\n    if (textDecoration === 'line-through') {\n      style.add('STRIKETHROUGH');\n    }\n\n    if (textDecoration === 'none') {\n      style.remove('UNDERLINE');\n      style.remove('STRIKETHROUGH');\n    }\n  });\n};\n/**\n * Determine if a nodeName is a list type, 'ul' or 'ol'\n */\n\n\nvar isListNode = function isListNode(nodeName) {\n  return nodeName === 'ul' || nodeName === 'ol';\n};\n/**\n *  ContentBlockConfig is a mutable data structure that holds all\n *  the information required to build a ContentBlock and an array of\n *  all the child nodes (childConfigs).\n *  It is being used a temporary data structure by the\n *  ContentBlocksBuilder class.\n */\n\n\n/**\n * ContentBlocksBuilder builds a list of ContentBlocks and an Entity Map\n * out of one (or several) HTMLElement(s).\n *\n * The algorithm has two passes: first it builds a tree of ContentBlockConfigs\n * by walking through the HTML nodes and their children, then it walks the\n * ContentBlockConfigs tree to compute parents/siblings and create\n * the actual ContentBlocks.\n *\n * Typical usage is:\n *     new ContentBlocksBuilder()\n *        .addDOMNode(someHTMLNode)\n *        .addDOMNode(someOtherHTMLNode)\n *       .getContentBlocks();\n *\n */\nvar ContentBlocksBuilder = /*#__PURE__*/function () {\n  // Most of the method in the class depend on the state of the content builder\n  // (i.e. currentBlockType, currentDepth, currentEntity etc.). Though it may\n  // be confusing at first, it made the code simpler than the alternative which\n  // is to pass those values around in every call.\n  // The following attributes are used to accumulate text and styles\n  // as we are walking the HTML node tree.\n  // Describes the future ContentState as a tree of content blocks\n  // The content blocks generated from the blockConfigs\n  // Entity map use to store links and images found in the HTML nodes\n  // Map HTML tags to draftjs block types and disambiguation function\n  function ContentBlocksBuilder(blockTypeMap, disambiguate) {\n    _defineProperty(this, \"characterList\", List());\n\n    _defineProperty(this, \"currentBlockType\", 'unstyled');\n\n    _defineProperty(this, \"currentDepth\", 0);\n\n    _defineProperty(this, \"currentEntity\", null);\n\n    _defineProperty(this, \"currentText\", '');\n\n    _defineProperty(this, \"wrapper\", null);\n\n    _defineProperty(this, \"blockConfigs\", []);\n\n    _defineProperty(this, \"contentBlocks\", []);\n\n    _defineProperty(this, \"entityMap\", DraftEntity);\n\n    _defineProperty(this, \"blockTypeMap\", void 0);\n\n    _defineProperty(this, \"disambiguate\", void 0);\n\n    this.clear();\n    this.blockTypeMap = blockTypeMap;\n    this.disambiguate = disambiguate;\n  }\n  /**\n   * Clear the internal state of the ContentBlocksBuilder\n   */\n\n\n  var _proto = ContentBlocksBuilder.prototype;\n\n  _proto.clear = function clear() {\n    this.characterList = List();\n    this.blockConfigs = [];\n    this.currentBlockType = 'unstyled';\n    this.currentDepth = 0;\n    this.currentEntity = null;\n    this.currentText = '';\n    this.entityMap = DraftEntity;\n    this.wrapper = null;\n    this.contentBlocks = [];\n  }\n  /**\n   * Add an HTMLElement to the ContentBlocksBuilder\n   */\n  ;\n\n  _proto.addDOMNode = function addDOMNode(node) {\n    var _this$blockConfigs;\n\n    this.contentBlocks = [];\n    this.currentDepth = 0; // Converts the HTML node to block config\n\n    (_this$blockConfigs = this.blockConfigs).push.apply(_this$blockConfigs, this._toBlockConfigs([node], OrderedSet())); // There might be some left over text in the builder's\n    // internal state, if so make a ContentBlock out of it.\n\n\n    this._trimCurrentText();\n\n    if (this.currentText !== '') {\n      this.blockConfigs.push(this._makeBlockConfig());\n    } // for chaining\n\n\n    return this;\n  }\n  /**\n   * Return the ContentBlocks and the EntityMap that corresponds\n   * to the previously added HTML nodes.\n   */\n  ;\n\n  _proto.getContentBlocks = function getContentBlocks() {\n    if (this.contentBlocks.length === 0) {\n      if (experimentalTreeDataSupport) {\n        this._toContentBlocks(this.blockConfigs);\n      } else {\n        this._toFlatContentBlocks(this.blockConfigs);\n      }\n    }\n\n    return {\n      contentBlocks: this.contentBlocks,\n      entityMap: this.entityMap\n    };\n  } // ***********************************WARNING******************************\n  // The methods below this line are private - don't call them directly.\n\n  /**\n   * Generate a new ContentBlockConfig out of the current internal state\n   * of the builder, then clears the internal state.\n   */\n  ;\n\n  _proto._makeBlockConfig = function _makeBlockConfig() {\n    var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var key = config.key || generateRandomKey();\n\n    var block = _objectSpread({\n      key: key,\n      type: this.currentBlockType,\n      text: this.currentText,\n      characterList: this.characterList,\n      depth: this.currentDepth,\n      parent: null,\n      children: List(),\n      prevSibling: null,\n      nextSibling: null,\n      childConfigs: []\n    }, config);\n\n    this.characterList = List();\n    this.currentBlockType = 'unstyled';\n    this.currentText = '';\n    return block;\n  }\n  /**\n   * Converts an array of HTML elements to a multi-root tree of content\n   * block configs. Some text content may be left in the builders internal\n   * state to enable chaining sucessive calls.\n   */\n  ;\n\n  _proto._toBlockConfigs = function _toBlockConfigs(nodes, style) {\n    var blockConfigs = [];\n\n    for (var i = 0; i < nodes.length; i++) {\n      var node = nodes[i];\n      var nodeName = node.nodeName.toLowerCase();\n\n      if (nodeName === 'body' || isListNode(nodeName)) {\n        // body, ol and ul are 'block' type nodes so create a block config\n        // with the text accumulated so far (if any)\n        this._trimCurrentText();\n\n        if (this.currentText !== '') {\n          blockConfigs.push(this._makeBlockConfig());\n        } // body, ol and ul nodes are ignored, but their children are inlined in\n        // the parent block config.\n\n\n        var wasCurrentDepth = this.currentDepth;\n        var wasWrapper = this.wrapper;\n\n        if (isListNode(nodeName)) {\n          this.wrapper = nodeName;\n\n          if (isListNode(wasWrapper)) {\n            this.currentDepth++;\n          }\n        }\n\n        blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n        this.currentDepth = wasCurrentDepth;\n        this.wrapper = wasWrapper;\n        continue;\n      }\n\n      var blockType = this.blockTypeMap.get(nodeName);\n\n      if (blockType !== undefined) {\n        // 'block' type node means we need to create a block config\n        // with the text accumulated so far (if any)\n        this._trimCurrentText();\n\n        if (this.currentText !== '') {\n          blockConfigs.push(this._makeBlockConfig());\n        }\n\n        var _wasCurrentDepth = this.currentDepth;\n        var _wasWrapper = this.wrapper;\n        this.wrapper = nodeName === 'pre' ? 'pre' : this.wrapper;\n\n        if (typeof blockType !== 'string') {\n          blockType = this.disambiguate(nodeName, this.wrapper) || blockType[0] || 'unstyled';\n        }\n\n        if (!experimentalTreeDataSupport && isHTMLElement(node) && (blockType === 'unordered-list-item' || blockType === 'ordered-list-item')) {\n          var htmlElement = node;\n          this.currentDepth = getListItemDepth(htmlElement, this.currentDepth);\n        }\n\n        var key = generateRandomKey();\n\n        var childConfigs = this._toBlockConfigs(Array.from(node.childNodes), style);\n\n        this._trimCurrentText();\n\n        blockConfigs.push(this._makeBlockConfig({\n          key: key,\n          childConfigs: childConfigs,\n          type: blockType\n        }));\n        this.currentDepth = _wasCurrentDepth;\n        this.wrapper = _wasWrapper;\n        continue;\n      }\n\n      if (nodeName === '#text') {\n        this._addTextNode(node, style);\n\n        continue;\n      }\n\n      if (nodeName === 'br') {\n        this._addBreakNode(node, style);\n\n        continue;\n      }\n\n      if (isValidImage(node)) {\n        this._addImgNode(node, style);\n\n        continue;\n      }\n\n      if (isValidAnchor(node)) {\n        this._addAnchorNode(node, blockConfigs, style);\n\n        continue;\n      }\n\n      var newStyle = style;\n\n      if (HTMLTagToRawInlineStyleMap.has(nodeName)) {\n        newStyle = newStyle.add(HTMLTagToRawInlineStyleMap.get(nodeName));\n      }\n\n      newStyle = styleFromNodeAttributes(node, newStyle);\n      var inlineStyle = detectInlineStyle(node);\n\n      if (inlineStyle != null) {\n        newStyle = newStyle.add(inlineStyle);\n      }\n\n      blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), newStyle));\n    }\n\n    return blockConfigs;\n  }\n  /**\n   * Append a string of text to the internal buffer.\n   */\n  ;\n\n  _proto._appendText = function _appendText(text, style) {\n    var _this$characterList;\n\n    this.currentText += text;\n    var characterMetadata = CharacterMetadata.create({\n      style: style,\n      entity: this.currentEntity\n    });\n    this.characterList = (_this$characterList = this.characterList).push.apply(_this$characterList, Array(text.length).fill(characterMetadata));\n  }\n  /**\n   * Trim the text in the internal buffer.\n   */\n  ;\n\n  _proto._trimCurrentText = function _trimCurrentText() {\n    var l = this.currentText.length;\n    var begin = l - this.currentText.trimLeft().length;\n    var end = this.currentText.trimRight().length; // We should not trim whitespaces for which an entity is defined.\n\n    var entity = this.characterList.findEntry(function (characterMetadata) {\n      return characterMetadata.getEntity() !== null;\n    });\n    begin = entity !== undefined ? Math.min(begin, entity[0]) : begin;\n    entity = this.characterList.reverse().findEntry(function (characterMetadata) {\n      return characterMetadata.getEntity() !== null;\n    });\n    end = entity !== undefined ? Math.max(end, l - entity[0]) : end;\n\n    if (begin > end) {\n      this.currentText = '';\n      this.characterList = List();\n    } else {\n      this.currentText = this.currentText.slice(begin, end);\n      this.characterList = this.characterList.slice(begin, end);\n    }\n  }\n  /**\n   * Add the content of an HTML text node to the internal state\n   */\n  ;\n\n  _proto._addTextNode = function _addTextNode(node, style) {\n    var text = node.textContent;\n    var trimmedText = text.trim(); // If we are not in a pre block and the trimmed content is empty,\n    // normalize to a single space.\n\n    if (trimmedText === '' && this.wrapper !== 'pre') {\n      text = ' ';\n    }\n\n    if (this.wrapper !== 'pre') {\n      // Trim leading line feed, which is invisible in HTML\n      text = text.replace(REGEX_LEADING_LF, ''); // Can't use empty string because MSWord\n\n      text = text.replace(REGEX_LF, SPACE);\n    }\n\n    this._appendText(text, style);\n  };\n\n  _proto._addBreakNode = function _addBreakNode(node, style) {\n    if (!isHTMLBRElement(node)) {\n      return;\n    }\n\n    this._appendText('\\n', style);\n  }\n  /**\n   * Add the content of an HTML img node to the internal state\n   */\n  ;\n\n  _proto._addImgNode = function _addImgNode(node, style) {\n    if (!isHTMLImageElement(node)) {\n      return;\n    }\n\n    var image = node;\n    var entityConfig = {};\n    imgAttr.forEach(function (attr) {\n      var imageAttribute = image.getAttribute(attr);\n\n      if (imageAttribute) {\n        entityConfig[attr] = imageAttribute;\n      }\n    }); // TODO: T15530363 update this when we remove DraftEntity entirely\n\n    this.currentEntity = this.entityMap.__create('IMAGE', 'IMMUTABLE', entityConfig); // The child text node cannot just have a space or return as content (since\n    // we strip those out), unless the image is for presentation only.\n    // See https://github.com/facebook/draft-js/issues/231 for some context.\n\n    if (gkx('draftjs_fix_paste_for_img')) {\n      if (image.getAttribute('role') !== 'presentation') {\n        this._appendText(\"\\uD83D\\uDCF7\", style);\n      }\n    } else {\n      this._appendText(\"\\uD83D\\uDCF7\", style);\n    }\n\n    this.currentEntity = null;\n  }\n  /**\n   * Add the content of an HTML 'a' node to the internal state. Child nodes\n   * (if any) are converted to Block Configs and appended to the provided\n   * blockConfig array.\n   */\n  ;\n\n  _proto._addAnchorNode = function _addAnchorNode(node, blockConfigs, style) {\n    // The check has already been made by isValidAnchor but\n    // we have to do it again to keep flow happy.\n    if (!isHTMLAnchorElement(node)) {\n      return;\n    }\n\n    var anchor = node;\n    var entityConfig = {};\n    anchorAttr.forEach(function (attr) {\n      var anchorAttribute = anchor.getAttribute(attr);\n\n      if (anchorAttribute) {\n        entityConfig[attr] = anchorAttribute;\n      }\n    });\n    entityConfig.url = new URI(anchor.href).toString(); // TODO: T15530363 update this when we remove DraftEntity completely\n\n    this.currentEntity = this.entityMap.__create('LINK', 'MUTABLE', entityConfig || {});\n    blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n    this.currentEntity = null;\n  }\n  /**\n   * Walk the BlockConfig tree, compute parent/children/siblings,\n   * and generate the corresponding ContentBlockNode\n   */\n  ;\n\n  _proto._toContentBlocks = function _toContentBlocks(blockConfigs) {\n    var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    var l = blockConfigs.length - 1;\n\n    for (var i = 0; i <= l; i++) {\n      var config = blockConfigs[i];\n      config.parent = parent;\n      config.prevSibling = i > 0 ? blockConfigs[i - 1].key : null;\n      config.nextSibling = i < l ? blockConfigs[i + 1].key : null;\n      config.children = List(config.childConfigs.map(function (child) {\n        return child.key;\n      }));\n      this.contentBlocks.push(new ContentBlockNode(_objectSpread({}, config)));\n\n      this._toContentBlocks(config.childConfigs, config.key);\n    }\n  }\n  /**\n   * Remove 'useless' container nodes from the block config hierarchy, by\n   * replacing them with their children.\n   */\n  ;\n\n  _proto._hoistContainersInBlockConfigs = function _hoistContainersInBlockConfigs(blockConfigs) {\n    var _this = this;\n\n    var hoisted = List(blockConfigs).flatMap(function (blockConfig) {\n      // Don't mess with useful blocks\n      if (blockConfig.type !== 'unstyled' || blockConfig.text !== '') {\n        return [blockConfig];\n      }\n\n      return _this._hoistContainersInBlockConfigs(blockConfig.childConfigs);\n    });\n    return hoisted;\n  } // ***********************************************************************\n  // The two methods below are used for backward compatibility when\n  // experimentalTreeDataSupport is disabled.\n\n  /**\n   * Same as _toContentBlocks but replaces nested blocks by their\n   * text content.\n   */\n  ;\n\n  _proto._toFlatContentBlocks = function _toFlatContentBlocks(blockConfigs) {\n    var _this2 = this;\n\n    var cleanConfigs = this._hoistContainersInBlockConfigs(blockConfigs);\n\n    cleanConfigs.forEach(function (config) {\n      var _this2$_extractTextFr = _this2._extractTextFromBlockConfigs(config.childConfigs),\n          text = _this2$_extractTextFr.text,\n          characterList = _this2$_extractTextFr.characterList;\n\n      _this2.contentBlocks.push(new ContentBlock(_objectSpread({}, config, {\n        text: config.text + text,\n        characterList: config.characterList.concat(characterList)\n      })));\n    });\n  }\n  /**\n   * Extract the text and the associated inline styles form an\n   * array of content block configs.\n   */\n  ;\n\n  _proto._extractTextFromBlockConfigs = function _extractTextFromBlockConfigs(blockConfigs) {\n    var l = blockConfigs.length - 1;\n    var text = '';\n    var characterList = List();\n\n    for (var i = 0; i <= l; i++) {\n      var config = blockConfigs[i];\n      text += config.text;\n      characterList = characterList.concat(config.characterList);\n\n      if (text !== '' && config.type !== 'unstyled') {\n        text += '\\n';\n        characterList = characterList.push(characterList.last());\n      }\n\n      var children = this._extractTextFromBlockConfigs(config.childConfigs);\n\n      text += children.text;\n      characterList = characterList.concat(children.characterList);\n    }\n\n    return {\n      text: text,\n      characterList: characterList\n    };\n  };\n\n  return ContentBlocksBuilder;\n}();\n/**\n * Converts an HTML string to an array of ContentBlocks and an EntityMap\n * suitable to initialize the internal state of a Draftjs component.\n */\n\n\nvar convertFromHTMLToContentBlocks = function convertFromHTMLToContentBlocks(html) {\n  var DOMBuilder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getSafeBodyFromHTML;\n  var blockRenderMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DefaultDraftBlockRenderMap;\n  // Be ABSOLUTELY SURE that the dom builder you pass here won't execute\n  // arbitrary code in whatever environment you're running this in. For an\n  // example of how we try to do this in-browser, see getSafeBodyFromHTML.\n  // Remove funky characters from the HTML string\n  html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE).replace(REGEX_CARRIAGE, '').replace(REGEX_ZWS, ''); // Build a DOM tree out of the HTML string\n\n  var safeBody = DOMBuilder(html);\n\n  if (!safeBody) {\n    return null;\n  } // Build a BlockTypeMap out of the BlockRenderMap\n\n\n  var blockTypeMap = buildBlockTypeMap(blockRenderMap); // Select the proper block type for the cases where the blockRenderMap\n  // uses multiple block types for the same html tag.\n\n  var disambiguate = function disambiguate(tag, wrapper) {\n    if (tag === 'li') {\n      return wrapper === 'ol' ? 'ordered-list-item' : 'unordered-list-item';\n    }\n\n    return null;\n  };\n\n  return new ContentBlocksBuilder(blockTypeMap, disambiguate).addDOMNode(safeBody).getContentBlocks();\n};\n\nmodule.exports = convertFromHTMLToContentBlocks;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isOldIE = UserAgent.isBrowser('IE <= 9'); // Provides a dom node that will not execute scripts\n// https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument\n// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/HTML_to_DOM\n\nfunction getSafeBodyFromHTML(html) {\n  var doc;\n  var root = null; // Provides a safe context\n\n  if (!isOldIE && document.implementation && document.implementation.createHTMLDocument) {\n    doc = document.implementation.createHTMLDocument('foo');\n    !doc.documentElement ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing doc.documentElement') : invariant(false) : void 0;\n    doc.documentElement.innerHTML = html;\n    root = doc.getElementsByTagName('body')[0];\n  }\n\n  return root;\n}\n\nmodule.exports = getSafeBodyFromHTML;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar adjustBlockDepthForContentState = require(\"./adjustBlockDepthForContentState\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar RichTextEditorUtil = {\n  currentBlockContainsLink: function currentBlockContainsLink(editorState) {\n    var selection = editorState.getSelection();\n    var contentState = editorState.getCurrentContent();\n    var entityMap = contentState.getEntityMap();\n    return contentState.getBlockForKey(selection.getAnchorKey()).getCharacterList().slice(selection.getStartOffset(), selection.getEndOffset()).some(function (v) {\n      var entity = v.getEntity();\n      return !!entity && entityMap.__get(entity).getType() === 'LINK';\n    });\n  },\n  getCurrentBlockType: function getCurrentBlockType(editorState) {\n    var selection = editorState.getSelection();\n    return editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();\n  },\n  getDataObjectForLinkURL: function getDataObjectForLinkURL(uri) {\n    return {\n      url: uri.toString()\n    };\n  },\n  handleKeyCommand: function handleKeyCommand(editorState, command, eventTimeStamp) {\n    switch (command) {\n      case 'bold':\n        return RichTextEditorUtil.toggleInlineStyle(editorState, 'BOLD');\n\n      case 'italic':\n        return RichTextEditorUtil.toggleInlineStyle(editorState, 'ITALIC');\n\n      case 'underline':\n        return RichTextEditorUtil.toggleInlineStyle(editorState, 'UNDERLINE');\n\n      case 'code':\n        return RichTextEditorUtil.toggleCode(editorState);\n\n      case 'backspace':\n      case 'backspace-word':\n      case 'backspace-to-start-of-line':\n        return RichTextEditorUtil.onBackspace(editorState);\n\n      case 'delete':\n      case 'delete-word':\n      case 'delete-to-end-of-block':\n        return RichTextEditorUtil.onDelete(editorState);\n\n      default:\n        // they may have custom editor commands; ignore those\n        return null;\n    }\n  },\n  insertSoftNewline: function insertSoftNewline(editorState) {\n    var contentState = DraftModifier.insertText(editorState.getCurrentContent(), editorState.getSelection(), '\\n', editorState.getCurrentInlineStyle(), null);\n    var newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n    return EditorState.forceSelection(newEditorState, contentState.getSelectionAfter());\n  },\n\n  /**\n   * For collapsed selections at the start of styled blocks, backspace should\n   * just remove the existing style.\n   */\n  onBackspace: function onBackspace(editorState) {\n    var selection = editorState.getSelection();\n\n    if (!selection.isCollapsed() || selection.getAnchorOffset() || selection.getFocusOffset()) {\n      return null;\n    } // First, try to remove a preceding atomic block.\n\n\n    var content = editorState.getCurrentContent();\n    var startKey = selection.getStartKey();\n    var blockBefore = content.getBlockBefore(startKey);\n\n    if (blockBefore && blockBefore.getType() === 'atomic') {\n      var blockMap = content.getBlockMap()[\"delete\"](blockBefore.getKey());\n      var withoutAtomicBlock = content.merge({\n        blockMap: blockMap,\n        selectionAfter: selection\n      });\n\n      if (withoutAtomicBlock !== content) {\n        return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n      }\n    } // If that doesn't succeed, try to remove the current block style.\n\n\n    var withoutBlockStyle = RichTextEditorUtil.tryToRemoveBlockStyle(editorState);\n\n    if (withoutBlockStyle) {\n      return EditorState.push(editorState, withoutBlockStyle, 'change-block-type');\n    }\n\n    return null;\n  },\n  onDelete: function onDelete(editorState) {\n    var selection = editorState.getSelection();\n\n    if (!selection.isCollapsed()) {\n      return null;\n    }\n\n    var content = editorState.getCurrentContent();\n    var startKey = selection.getStartKey();\n    var block = content.getBlockForKey(startKey);\n    var length = block.getLength(); // The cursor is somewhere within the text. Behave normally.\n\n    if (selection.getStartOffset() < length) {\n      return null;\n    }\n\n    var blockAfter = content.getBlockAfter(startKey);\n\n    if (!blockAfter || blockAfter.getType() !== 'atomic') {\n      return null;\n    }\n\n    var atomicBlockTarget = selection.merge({\n      focusKey: blockAfter.getKey(),\n      focusOffset: blockAfter.getLength()\n    });\n    var withoutAtomicBlock = DraftModifier.removeRange(content, atomicBlockTarget, 'forward');\n\n    if (withoutAtomicBlock !== content) {\n      return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n    }\n\n    return null;\n  },\n  onTab: function onTab(event, editorState, maxDepth) {\n    var selection = editorState.getSelection();\n    var key = selection.getAnchorKey();\n\n    if (key !== selection.getFocusKey()) {\n      return editorState;\n    }\n\n    var content = editorState.getCurrentContent();\n    var block = content.getBlockForKey(key);\n    var type = block.getType();\n\n    if (type !== 'unordered-list-item' && type !== 'ordered-list-item') {\n      return editorState;\n    }\n\n    event.preventDefault();\n    var depth = block.getDepth();\n\n    if (!event.shiftKey && depth === maxDepth) {\n      return editorState;\n    }\n\n    var withAdjustment = adjustBlockDepthForContentState(content, selection, event.shiftKey ? -1 : 1, maxDepth);\n    return EditorState.push(editorState, withAdjustment, 'adjust-depth');\n  },\n  toggleBlockType: function toggleBlockType(editorState, blockType) {\n    var selection = editorState.getSelection();\n    var startKey = selection.getStartKey();\n    var endKey = selection.getEndKey();\n    var content = editorState.getCurrentContent();\n    var target = selection; // Triple-click can lead to a selection that includes offset 0 of the\n    // following block. The `SelectionState` for this case is accurate, but\n    // we should avoid toggling block type for the trailing block because it\n    // is a confusing interaction.\n\n    if (startKey !== endKey && selection.getEndOffset() === 0) {\n      var blockBefore = nullthrows(content.getBlockBefore(endKey));\n      endKey = blockBefore.getKey();\n      target = target.merge({\n        anchorKey: startKey,\n        anchorOffset: selection.getStartOffset(),\n        focusKey: endKey,\n        focusOffset: blockBefore.getLength(),\n        isBackward: false\n      });\n    }\n\n    var hasAtomicBlock = content.getBlockMap().skipWhile(function (_, k) {\n      return k !== startKey;\n    }).reverse().skipWhile(function (_, k) {\n      return k !== endKey;\n    }).some(function (v) {\n      return v.getType() === 'atomic';\n    });\n\n    if (hasAtomicBlock) {\n      return editorState;\n    }\n\n    var typeToSet = content.getBlockForKey(startKey).getType() === blockType ? 'unstyled' : blockType;\n    return EditorState.push(editorState, DraftModifier.setBlockType(content, target, typeToSet), 'change-block-type');\n  },\n  toggleCode: function toggleCode(editorState) {\n    var selection = editorState.getSelection();\n    var anchorKey = selection.getAnchorKey();\n    var focusKey = selection.getFocusKey();\n\n    if (selection.isCollapsed() || anchorKey !== focusKey) {\n      return RichTextEditorUtil.toggleBlockType(editorState, 'code-block');\n    }\n\n    return RichTextEditorUtil.toggleInlineStyle(editorState, 'CODE');\n  },\n\n  /**\n   * Toggle the specified inline style for the selection. If the\n   * user's selection is collapsed, apply or remove the style for the\n   * internal state. If it is not collapsed, apply the change directly\n   * to the document state.\n   */\n  toggleInlineStyle: function toggleInlineStyle(editorState, inlineStyle) {\n    var selection = editorState.getSelection();\n    var currentStyle = editorState.getCurrentInlineStyle(); // If the selection is collapsed, toggle the specified style on or off and\n    // set the result as the new inline style override. This will then be\n    // used as the inline style for the next character to be inserted.\n\n    if (selection.isCollapsed()) {\n      return EditorState.setInlineStyleOverride(editorState, currentStyle.has(inlineStyle) ? currentStyle.remove(inlineStyle) : currentStyle.add(inlineStyle));\n    } // If characters are selected, immediately apply or remove the\n    // inline style on the document state itself.\n\n\n    var content = editorState.getCurrentContent();\n    var newContent; // If the style is already present for the selection range, remove it.\n    // Otherwise, apply it.\n\n    if (currentStyle.has(inlineStyle)) {\n      newContent = DraftModifier.removeInlineStyle(content, selection, inlineStyle);\n    } else {\n      newContent = DraftModifier.applyInlineStyle(content, selection, inlineStyle);\n    }\n\n    return EditorState.push(editorState, newContent, 'change-inline-style');\n  },\n  toggleLink: function toggleLink(editorState, targetSelection, entityKey) {\n    var withoutLink = DraftModifier.applyEntity(editorState.getCurrentContent(), targetSelection, entityKey);\n    return EditorState.push(editorState, withoutLink, 'apply-entity');\n  },\n\n  /**\n   * When a collapsed cursor is at the start of a styled block, changes block\n   * type to 'unstyled'. Returns null if selection does not meet that criteria.\n   */\n  tryToRemoveBlockStyle: function tryToRemoveBlockStyle(editorState) {\n    var selection = editorState.getSelection();\n    var offset = selection.getAnchorOffset();\n\n    if (selection.isCollapsed() && offset === 0) {\n      var key = selection.getAnchorKey();\n      var content = editorState.getCurrentContent();\n      var block = content.getBlockForKey(key);\n      var type = block.getType();\n      var blockBefore = content.getBlockBefore(key);\n\n      if (type === 'code-block' && blockBefore && blockBefore.getType() === 'code-block' && blockBefore.getLength() !== 0) {\n        return null;\n      }\n\n      if (type !== 'unstyled') {\n        return DraftModifier.setBlockType(content, selection, 'unstyled');\n      }\n    }\n\n    return null;\n  }\n};\nmodule.exports = RichTextEditorUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X'); // Firefox on OSX had a bug resulting in navigation instead of cursor movement.\n// This bug was fixed in Firefox 29. Feature detection is virtually impossible\n// so we just check the version number. See #342765.\n\nvar shouldFixFirefoxMovement = isOSX && UserAgent.isBrowser('Firefox < 29');\nvar hasCommandModifier = KeyBindingUtil.hasCommandModifier,\n    isCtrlKeyCommand = KeyBindingUtil.isCtrlKeyCommand;\n\nfunction shouldRemoveWord(e) {\n  return isOSX && e.altKey || isCtrlKeyCommand(e);\n}\n/**\n * Get the appropriate undo/redo command for a Z key command.\n */\n\n\nfunction getZCommand(e) {\n  if (!hasCommandModifier(e)) {\n    return null;\n  }\n\n  return e.shiftKey ? 'redo' : 'undo';\n}\n\nfunction getDeleteCommand(e) {\n  // Allow default \"cut\" behavior for PCs on Shift + Delete.\n  if (!isOSX && e.shiftKey) {\n    return null;\n  }\n\n  return shouldRemoveWord(e) ? 'delete-word' : 'delete';\n}\n\nfunction getBackspaceCommand(e) {\n  if (hasCommandModifier(e) && isOSX) {\n    return 'backspace-to-start-of-line';\n  }\n\n  return shouldRemoveWord(e) ? 'backspace-word' : 'backspace';\n}\n/**\n * Retrieve a bound key command for the given event.\n */\n\n\nfunction getDefaultKeyBinding(e) {\n  switch (e.keyCode) {\n    case 66:\n      // B\n      return hasCommandModifier(e) ? 'bold' : null;\n\n    case 68:\n      // D\n      return isCtrlKeyCommand(e) ? 'delete' : null;\n\n    case 72:\n      // H\n      return isCtrlKeyCommand(e) ? 'backspace' : null;\n\n    case 73:\n      // I\n      return hasCommandModifier(e) ? 'italic' : null;\n\n    case 74:\n      // J\n      return hasCommandModifier(e) ? 'code' : null;\n\n    case 75:\n      // K\n      return isOSX && isCtrlKeyCommand(e) ? 'secondary-cut' : null;\n\n    case 77:\n      // M\n      return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n    case 79:\n      // O\n      return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n    case 84:\n      // T\n      return isOSX && isCtrlKeyCommand(e) ? 'transpose-characters' : null;\n\n    case 85:\n      // U\n      return hasCommandModifier(e) ? 'underline' : null;\n\n    case 87:\n      // W\n      return isOSX && isCtrlKeyCommand(e) ? 'backspace-word' : null;\n\n    case 89:\n      // Y\n      if (isCtrlKeyCommand(e)) {\n        return isOSX ? 'secondary-paste' : 'redo';\n      }\n\n      return null;\n\n    case 90:\n      // Z\n      return getZCommand(e) || null;\n\n    case Keys.RETURN:\n      return 'split-block';\n\n    case Keys.DELETE:\n      return getDeleteCommand(e);\n\n    case Keys.BACKSPACE:\n      return getBackspaceCommand(e);\n    // LEFT/RIGHT handlers serve as a workaround for a Firefox bug.\n\n    case Keys.LEFT:\n      return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-start-of-block' : null;\n\n    case Keys.RIGHT:\n      return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-end-of-block' : null;\n\n    default:\n      return null;\n  }\n}\n\nmodule.exports = getDefaultKeyBinding;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = {\n  stringify: function stringify(key) {\n    return '_' + String(key);\n  },\n  unstringify: function unstringify(key) {\n    return key.slice(1);\n  }\n};\nmodule.exports = DraftStringKey;","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"react\",\"draft-js\",\"immutable\"],t):\"object\"==typeof exports?exports.reactDraftWysiwyg=t(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):e.reactDraftWysiwyg=t(e.react,e[\"draft-js\"],e.immutable)}(window,function(n,o,r){return c={},i.m=a=[function(e,t,n){e.exports=n(9)()},function(e,t){e.exports=n},function(e,t,n){var o;\n/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n!function(){\"use strict\";var a={}.hasOwnProperty;function c(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if(\"string\"==o||\"number\"==o)e.push(n);else if(Array.isArray(n)&&n.length){var r=c.apply(null,n);r&&e.push(r)}else if(\"object\"==o)for(var i in n)a.call(n,i)&&n[i]&&e.push(i)}}return e.join(\" \")}e.exports?(c.default=c,e.exports=c):void 0===(o=function(){return c}.apply(t,[]))||(e.exports=o)}()},function(e,t){e.exports=o},function(e,t,n){function r(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var o,i,a,c;window,e.exports=(o=n(3),i=n(5),c={},r.m=a=[function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var b=n(0),i=n(1);function j(e){var t=e.getSelection(),n=e.getCurrentContent(),o=t.getStartKey(),r=t.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(e,t){return t===o}).takeUntil(function(e,t){return t===r}).concat([[r,i.get(r)]])}function u(e){return j(e).toList()}function l(e){if(e)return u(e).get(0)}function o(e){if(e){var n=l(e),t=e.getCurrentContent().getBlockMap().toSeq().toList(),o=0;if(t.forEach(function(e,t){e.get(\"key\")===n.get(\"key\")&&(o=t-1)}),-1<o)return t.get(o)}}function r(e){return e?e.getCurrentContent().getBlockMap().toList():new i.List}function a(e){var t=u(e);if(!t.some(function(e){return e.type!==t.get(0).type}))return t.get(0).type}function c(e){var t=b.RichUtils.tryToRemoveBlockStyle(e);return t?b.EditorState.push(e,t,\"change-block-type\"):e}function s(e){var t=\"\",n=e.getSelection(),o=n.getAnchorOffset(),r=n.getFocusOffset(),i=u(e);if(0<i.size){if(n.getIsBackward()){var a=o;o=r,r=a}for(var c=0;c<i.size;c+=1){var l=0===c?o:0,s=c===i.size-1?r:i.get(c).getText().length;t+=i.get(c).getText().slice(l,s)}}return t}function p(e){var t=e.getCurrentContent(),n=e.getSelection(),o=b.Modifier.removeRange(t,n,\"forward\"),r=o.getSelectionAfter(),i=o.getBlockForKey(r.getStartKey());return o=b.Modifier.insertText(o,r,\"\\n\",i.getInlineStyleAt(r.getStartOffset()),null),b.EditorState.push(e,o,\"insert-fragment\")}function d(e){var t=b.Modifier.splitBlock(e.getCurrentContent(),e.getSelection());return c(b.EditorState.push(e,t,\"split-block\"))}function m(e){var t=e.getCurrentContent().getBlockMap().toList(),n=e.getSelection().merge({anchorKey:t.first().get(\"key\"),anchorOffset:0,focusKey:t.last().get(\"key\"),focusOffset:t.last().getLength()}),o=b.Modifier.removeRange(e.getCurrentContent(),n,\"forward\");return b.EditorState.push(e,o,\"remove-range\")}function f(e,t){var n=b.Modifier.setBlockData(e.getCurrentContent(),e.getSelection(),t);return b.EditorState.push(e,n,\"change-block-data\")}function g(e){var o=new i.Map({}),t=u(e);if(t&&0<t.size)for(var n=function(e){var n=t.get(e).getData();if(!n||0===n.size)return o=o.clear(),\"break\";if(0===e)o=n;else if(o.forEach(function(e,t){n.get(t)&&n.get(t)===e||(o=o.delete(t))}),0===o.size)return o=o.clear(),\"break\"},r=0;r<t.size&&\"break\"!==n(r);r+=1);return o}var y=Object(i.Map)({code:{element:\"pre\"}}),h=b.DefaultDraftBlockRenderMap.merge(y);function M(e){if(e){var t=e.getType();return\"unordered-list-item\"===t||\"ordered-list-item\"===t}return!1}function N(e,t,n){var o,r=e.getSelection();o=r.getIsBackward()?r.getFocusKey():r.getAnchorKey();var i=e.getCurrentContent(),a=i.getBlockForKey(o),c=a.getType();if(\"unordered-list-item\"!==c&&\"ordered-list-item\"!==c)return e;var l=i.getBlockBefore(o);if(!l)return e;if(l.getType()!==c)return e;var s=a.getDepth();if(1===t&&s===n)return e;var u,p,d,m,f,g,y,h=Math.min(l.getDepth()+1,n),M=(p=t,d=h,m=(u=e).getSelection(),f=u.getCurrentContent(),g=f.getBlockMap(),y=j(u).map(function(e){var t=e.getDepth()+p;return t=Math.max(0,Math.min(t,d)),e.set(\"depth\",t)}),g=g.merge(y),f.merge({blockMap:g,selectionBefore:m,selectionAfter:m}));return b.EditorState.push(e,M,\"adjust-depth\")}function S(e,t){var n;return 13===(n=t).which&&(n.getModifierState(\"Shift\")||n.getModifierState(\"Alt\")||n.getModifierState(\"Control\"))?e.getSelection().isCollapsed()?b.RichUtils.insertSoftNewline(e):p(e):function(e){var t=e.getSelection();if(t.isCollapsed()){var n=e.getCurrentContent(),o=t.getStartKey(),r=n.getBlockForKey(o);if(!M(r)&&\"unstyled\"!==r.getType()&&r.getLength()===t.getStartOffset())return d(e);if(M(r)&&0===r.getLength()){var i=r.getDepth();if(0===i)return c(e);if(0<i)return N(e,-1,i)}}}(e)}function E(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function L(e){return(L=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function k(e){var t=e.getSelection();if(t.isCollapsed()){var n={},o=e.getCurrentInlineStyle().toList().toJS();if(o)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=0<=o.indexOf(e)}),n}var a=t.getStartOffset(),c=t.getEndOffset(),l=u(e);if(0<l.size){var r=function(){for(var n={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},o=0;o<l.size;o+=1){var e=0===o?a:0,t=o===l.size-1?c:l.get(o).getText().length;e===t&&0===e?(e=1,t=2):e===t&&--e;for(var r=function(e){var t=l.get(o).getInlineStyleAt(e);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){n[e]=n[e]&&t.get(e)===e})},i=e;i<t;i+=1)r(i)}return{v:n}}();if(\"object\"===L(r))return r.v}return{}}function D(e){var t,n=e.getSelection(),o=n.getStartOffset(),r=n.getEndOffset();o===r&&0===o?r=1:o===r&&--o;for(var i=l(e),a=o;a<r;a+=1){var c=i.getEntityAt(a);if(!c){t=void 0;break}if(a===o)t=c;else if(t!==c){t=void 0;break}}return t}function v(e,t){var n,o=l(e);return o.findEntityRanges(function(e){return e.get(\"entity\")===t},function(e,t){n={start:e,end:t,text:o.get(\"text\").slice(e,t)}}),n}function w(e,t,n){I[e][\"\".concat(e.toLowerCase(),\"-\").concat(n)]=C({},\"\".concat(t),n)}function x(){return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?E(Object(n),!0).forEach(function(e){C(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},I.color,{},I.bgcolor,{},I.fontSize,{},I.fontFamily,{CODE:I.CODE,SUPERSCRIPT:I.SUPERSCRIPT,SUBSCRIPT:I.SUBSCRIPT})}var I={color:{},bgcolor:{},fontSize:{},fontFamily:{},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\",background:\"#f1f1f1\",borderRadius:3,padding:\"1px 3px\"},SUPERSCRIPT:{fontSize:11,position:\"relative\",top:-8,display:\"inline-flex\"},SUBSCRIPT:{fontSize:11,position:\"relative\",bottom:-8,display:\"inline-flex\"}};function O(e,t,n){var o=e.getSelection(),r=Object.keys(I[t]).reduce(function(e,t){return b.Modifier.removeInlineStyle(e,o,t)},e.getCurrentContent()),i=b.EditorState.push(e,r,\"changeinline-style\"),a=e.getCurrentInlineStyle();if(o.isCollapsed()&&(i=a.reduce(function(e,t){return b.RichUtils.toggleInlineStyle(e,t)},i)),\"SUPERSCRIPT\"===t||\"SUBSCRIPT\"==t)a.has(n)||(i=b.RichUtils.toggleInlineStyle(i,n));else{var c=\"bgcolor\"===t?\"backgroundColor\":t;a.has(\"\".concat(c,\"-\").concat(n))||(i=b.RichUtils.toggleInlineStyle(i,\"\".concat(t.toLowerCase(),\"-\").concat(n)),w(t,c,n))}return i}function A(e){e&&e.getCurrentContent().getBlockMap().map(function(e){return e.get(\"characterList\")}).toList().flatten().forEach(function(e){e&&0===e.indexOf(\"color-\")?w(\"color\",\"color\",e.substr(6)):e&&0===e.indexOf(\"bgcolor-\")?w(\"bgcolor\",\"backgroundColor\",e.substr(8)):e&&0===e.indexOf(\"fontsize-\")?w(\"fontSize\",\"fontSize\",+e.substr(9)):e&&0===e.indexOf(\"fontfamily-\")&&w(\"fontFamily\",\"fontFamily\",e.substr(11))})}function T(e,t,n){var o=e.getInlineStyleAt(n).toList().filter(function(e){return e.startsWith(t.toLowerCase())});if(o&&0<o.size)return o.get(0)}function z(o,s){if(o&&s&&0<s.length){var e=function(){var e=o.getSelection(),i={};if(e.isCollapsed())return s.forEach(function(e){i[e]=function(e,t){var n=e.getCurrentInlineStyle().toList().filter(function(e){return e.startsWith(t.toLowerCase())});if(n&&0<n.size)return n.get(0)}(o,e)}),{v:i};var a=e.getStartOffset(),c=e.getEndOffset(),l=u(o);if(0<l.size){for(var t=function(n){var e=0===n?a:0,t=n===l.size-1?c:l.get(n).getText().length;e===t&&0===e?(e=1,t=2):e===t&&--e;for(var o=function(t){t===e?s.forEach(function(e){i[e]=T(l.get(n),e,t)}):s.forEach(function(e){i[e]&&i[e]!==T(l.get(n),e,t)&&(i[e]=void 0)})},r=e;r<t;r+=1)o(r)},n=0;n<l.size;n+=1)t(n);return{v:i}}}();if(\"object\"===L(e))return e.v}return{}}function _(t){var e=t.getCurrentInlineStyle(),n=t.getCurrentContent();return e.forEach(function(e){n=b.Modifier.removeInlineStyle(n,t.getSelection(),e)}),b.EditorState.push(t,n,\"change-inline-style\")}n.d(t,\"isListBlock\",function(){return M}),n.d(t,\"changeDepth\",function(){return N}),n.d(t,\"handleNewLine\",function(){return S}),n.d(t,\"getEntityRange\",function(){return v}),n.d(t,\"getCustomStyleMap\",function(){return x}),n.d(t,\"toggleCustomInlineStyle\",function(){return O}),n.d(t,\"getSelectionEntity\",function(){return D}),n.d(t,\"extractInlineStyle\",function(){return A}),n.d(t,\"removeAllInlineStyles\",function(){return _}),n.d(t,\"getSelectionInlineStyle\",function(){return k}),n.d(t,\"getSelectionCustomInlineStyle\",function(){return z}),n.d(t,\"getSelectedBlocksMap\",function(){return j}),n.d(t,\"getSelectedBlocksList\",function(){return u}),n.d(t,\"getSelectedBlock\",function(){return l}),n.d(t,\"getBlockBeforeSelectedBlock\",function(){return o}),n.d(t,\"getAllBlocks\",function(){return r}),n.d(t,\"getSelectedBlocksType\",function(){return a}),n.d(t,\"removeSelectedBlocksStyle\",function(){return c}),n.d(t,\"getSelectionText\",function(){return s}),n.d(t,\"addLineBreakRemovingSelection\",function(){return p}),n.d(t,\"insertNewUnstyledBlock\",function(){return d}),n.d(t,\"clearEditorContent\",function(){return m}),n.d(t,\"setBlockData\",function(){return f}),n.d(t,\"getSelectedBlocksMetadata\",function(){return g}),n.d(t,\"blockRenderMap\",function(){return h})}],r.c=c,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=2))},function(e,t){e.exports=r},function(e,t,n){function r(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var o,i,a,c;window,e.exports=(o=n(5),i=n(3),c={},r.m=a=[function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var j=n(1),s=n(0),N=function(e,t,n){var o,r=e.textContent;return\"\"===r.trim()?{chunk:(o=n,{text:\" \",inlines:[new s.OrderedSet],entities:[o],blocks:[]})}:{chunk:{text:r,inlines:Array(r.length).fill(t),entities:Array(r.length).fill(n),blocks:[]}}},S=function(){return{text:\"\\n\",inlines:[new s.OrderedSet],entities:new Array(1),blocks:[]}},E=function(){return{text:\"\",inlines:[],entities:[],blocks:[]}},C=function(e,t){return{text:\"\",inlines:[],entities:[],blocks:[{type:e,depth:0,data:t||new s.Map({})}]}},L=function(e,t,n){return{text:\"\\r\",inlines:[],entities:[],blocks:[{type:e,depth:Math.max(0,Math.min(4,t)),data:n||new s.Map({})}]}},k=function(e){return{text:\"\\r \",inlines:[new s.OrderedSet],entities:[e],blocks:[{type:\"atomic\",depth:0,data:new s.Map({})}]}},D=function(e,t){return{text:e.text+t.text,inlines:e.inlines.concat(t.inlines),entities:e.entities.concat(t.entities),blocks:e.blocks.concat(t.blocks)}},v=new s.Map({\"header-one\":{element:\"h1\"},\"header-two\":{element:\"h2\"},\"header-three\":{element:\"h3\"},\"header-four\":{element:\"h4\"},\"header-five\":{element:\"h5\"},\"header-six\":{element:\"h6\"},\"unordered-list-item\":{element:\"li\",wrapper:\"ul\"},\"ordered-list-item\":{element:\"li\",wrapper:\"ol\"},blockquote:{element:\"blockquote\"},code:{element:\"pre\"},atomic:{element:\"figure\"},unstyled:{element:\"p\",aliasedElements:[\"div\"]}}),w={code:\"CODE\",del:\"STRIKETHROUGH\",em:\"ITALIC\",strong:\"BOLD\",ins:\"UNDERLINE\",sub:\"SUBSCRIPT\",sup:\"SUPERSCRIPT\"};function x(e){return e.style.textAlign?new s.Map({\"text-align\":e.style.textAlign}):e.style.marginLeft?new s.Map({\"margin-left\":e.style.marginLeft}):void 0}var I=function(e){var t=void 0;if(e instanceof HTMLAnchorElement){var n={};t=e.dataset&&void 0!==e.dataset.mention?(n.url=e.href,n.text=e.innerHTML,n.value=e.dataset.value,j.Entity.__create(\"MENTION\",\"IMMUTABLE\",n)):(n.url=e.getAttribute&&e.getAttribute(\"href\")||e.href,n.title=e.innerHTML,n.targetOption=e.target,j.Entity.__create(\"LINK\",\"MUTABLE\",n))}return t};n.d(t,\"default\",function(){return o});var u=\" \",p=new RegExp(\"&nbsp;\",\"g\"),O=!0;function o(e,t){var n,o,r,i=(n=t,o=e.trim().replace(p,u),(r=function(e){var t,n=null;return document.implementation&&document.implementation.createHTMLDocument&&((t=document.implementation.createHTMLDocument(\"foo\")).documentElement.innerHTML=e,n=t.getElementsByTagName(\"body\")[0]),n}(o))?(O=!0,{chunk:function e(t,n,o,r,i,a){var c=t.nodeName.toLowerCase();if(a){var l=a(c,t);if(l){var s=j.Entity.__create(l.type,l.mutability,l.data||{});return{chunk:k(s)}}}if(\"#text\"===c&&\"\\n\"!==t.textContent)return N(t,n,i);if(\"br\"===c)return{chunk:S()};if(\"img\"===c&&t instanceof HTMLImageElement){var u={};u.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,u.alt=t.alt,u.height=t.style.height,u.width=t.style.width,t.style.float&&(u.alignment=t.style.float);var p=j.Entity.__create(\"IMAGE\",\"MUTABLE\",u);return{chunk:k(p)}}if(\"video\"===c&&t instanceof HTMLVideoElement){var d={};d.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,d.alt=t.alt,d.height=t.style.height,d.width=t.style.width,t.style.float&&(d.alignment=t.style.float);var m=j.Entity.__create(\"VIDEO\",\"MUTABLE\",d);return{chunk:k(m)}}if(\"iframe\"===c&&t instanceof HTMLIFrameElement){var f={};f.src=t.getAttribute&&t.getAttribute(\"src\")||t.src,f.height=t.height,f.width=t.width;var g=j.Entity.__create(\"EMBEDDED_LINK\",\"MUTABLE\",f);return{chunk:k(g)}}var y,h=function(t,n){var e=v.filter(function(e){return e.element===t&&(!e.wrapper||e.wrapper===n)||e.wrapper===t||e.aliasedElements&&-1<e.aliasedElements.indexOf(t)}).keySeq().toSet().toArray();if(1===e.length)return e[0]}(c,r);h&&(\"ul\"===c||\"ol\"===c?(r=c,o+=1):(\"unordered-list-item\"!==h&&\"ordered-list-item\"!==h&&(r=\"\",o=-1),O?(y=C(h,x(t)),O=!1):y=L(h,o,x(t)))),y=y||E(),n=function(e,t,n){var o,r=w[e];if(r)o=n.add(r).toOrderedSet();else if(t instanceof HTMLElement){var l=t;o=(o=n).withMutations(function(e){var t=l.style.color,n=l.style.backgroundColor,o=l.style.fontSize,r=l.style.fontFamily.replace(/^\"|\"$/g,\"\"),i=l.style.fontWeight,a=l.style.textDecoration,c=l.style.fontStyle;t&&e.add(\"color-\".concat(t.replace(/ /g,\"\"))),n&&e.add(\"bgcolor-\".concat(n.replace(/ /g,\"\"))),o&&e.add(\"fontsize-\".concat(o.replace(/px$/g,\"\"))),r&&e.add(\"fontfamily-\".concat(r)),\"bold\"===i&&e.add(w.strong),\"underline\"===a&&e.add(w.ins),\"italic\"===c&&e.add(w.em)}).toOrderedSet()}return o}(c,t,n);for(var M=t.firstChild;M;){var b=e(M,n,o,r,I(M)||i,a).chunk;y=D(y,b),M=M.nextSibling}return{chunk:y}}(r,new s.OrderedSet,-1,\"\",void 0,n).chunk}):null);if(i){var a=i.chunk,c=new s.OrderedMap({});a.entities&&a.entities.forEach(function(e){e&&(c=c.set(e,j.Entity.__get(e)))});var l=0;return{contentBlocks:a.text.split(\"\\r\").map(function(e,t){var n=l+e.length,o=a&&a.inlines.slice(l,n),r=a&&a.entities.slice(l,n),i=new s.List(o.map(function(e,t){var n={style:e,entity:null};return r[t]&&(n.entity=r[t]),j.CharacterMetadata.create(n)}));return l=n,new j.ContentBlock({key:Object(j.genKey)(),type:a&&a.blocks[t]&&a.blocks[t].type||\"unstyled\",depth:a&&a.blocks[t]&&a.blocks[t].depth,data:a&&a.blocks[t]&&a.blocks[t].data||new s.Map({}),text:e,characterList:i})}),entityMap:c}}return null}}],r.c=c,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=2))},function(e,t,l){\"use strict\";function o(n){return Array.prototype.slice.call(arguments,1).forEach(function(t){t&&Object.keys(t).forEach(function(e){n[e]=t[e]})}),n}function s(e){return Object.prototype.toString.call(e)}function u(e){return\"[object Function]\"===s(e)}function p(e){return e.replace(/[.?*+^$[\\]\\\\(){}|-]/g,\"\\\\$&\")}var r={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var i={\"http:\":{validate:function(e,t,n){var o=e.slice(t);return n.re.http||(n.re.http=new RegExp(\"^\\\\/\\\\/\"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,\"i\")),n.re.http.test(o)?o.match(n.re.http)[0].length:0}},\"https:\":\"http:\",\"ftp:\":\"http:\",\"//\":{validate:function(e,t,n){var o=e.slice(t);return n.re.no_http||(n.re.no_http=new RegExp(\"^\"+n.re.src_auth+\"(?:localhost|(?:(?:\"+n.re.src_domain+\")\\\\.)+\"+n.re.src_domain_root+\")\"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,\"i\")),n.re.no_http.test(o)?3<=t&&\":\"===e[t-3]?0:3<=t&&\"/\"===e[t-3]?0:o.match(n.re.no_http)[0].length:0}},\"mailto:\":{validate:function(e,t,n){var o=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp(\"^\"+n.re.src_email_name+\"@\"+n.re.src_host_strict,\"i\")),n.re.mailto.test(o)?o.match(n.re.mailto)[0].length:0}}},d=\"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\",a=\"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\".split(\"|\");function m(){return function(e,t){t.normalize(e)}}function c(r){var t=r.re=l(21)(r.__opts__),e=r.__tlds__.slice();function n(e){return e.replace(\"%TLDS%\",t.src_tlds)}r.onCompile(),r.__tlds_replaced__||e.push(d),e.push(t.src_xn),t.src_tlds=e.join(\"|\"),t.email_fuzzy=RegExp(n(t.tpl_email_fuzzy),\"i\"),t.link_fuzzy=RegExp(n(t.tpl_link_fuzzy),\"i\"),t.link_no_ip_fuzzy=RegExp(n(t.tpl_link_no_ip_fuzzy),\"i\"),t.host_fuzzy_test=RegExp(n(t.tpl_host_fuzzy_test),\"i\");var i=[];function a(e,t){throw new Error('(LinkifyIt) Invalid schema \"'+e+'\": '+t)}r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var o,n={validate:null,link:null};if(r.__compiled__[e]=n,\"[object Object]\"===s(t))return\"[object RegExp]\"===s(t.validate)?n.validate=(o=t.validate,function(e,t){var n=e.slice(t);return o.test(n)?n.match(o)[0].length:0}):u(t.validate)?n.validate=t.validate:a(e,t),void(u(t.normalize)?n.normalize=t.normalize:t.normalize?a(e,t):n.normalize=m());if(\"[object String]\"!==s(t))a(e,t);else i.push(e)}}),i.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[\"\"]={validate:null,normalize:m()};var o,c=Object.keys(r.__compiled__).filter(function(e){return 0<e.length&&r.__compiled__[e]}).map(p).join(\"|\");r.re.schema_test=RegExp(\"(^|(?!_)(?:[><|]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"i\"),r.re.schema_search=RegExp(\"(^|(?!_)(?:[><|]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"ig\"),r.re.pretest=RegExp(\"(\"+r.re.schema_test.source+\")|(\"+r.re.host_fuzzy_test.source+\")|@\",\"i\"),(o=r).__index__=-1,o.__text_cache__=\"\"}function f(e,t){var n=e.__index__,o=e.__last_index__,r=e.__text_cache__.slice(n,o);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=o+t,this.raw=r,this.text=r,this.url=r}function g(e,t){var n=new f(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function y(e,t){if(!(this instanceof y))return new y(e,t);var n;t||(n=e,Object.keys(n||{}).reduce(function(e,t){return e||r.hasOwnProperty(t)},!1)&&(t=e,e={})),this.__opts__=o({},r,t),this.__index__=-1,this.__last_index__=-1,this.__schema__=\"\",this.__text_cache__=\"\",this.__schemas__=o({},i,e),this.__compiled__={},this.__tlds__=a,this.__tlds_replaced__=!1,this.re={},c(this)}y.prototype.add=function(e,t){return this.__schemas__[e]=t,c(this),this},y.prototype.set=function(e){return this.__opts__=o(this.__opts__,e),this},y.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,n,o,r,i,a,c,l;if(this.re.schema_test.test(e))for((c=this.re.schema_search).lastIndex=0;null!==(t=c.exec(e));)if(r=this.testSchemaAt(e,t[2],c.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+r;break}return this.__opts__.fuzzyLink&&this.__compiled__[\"http:\"]&&0<=(l=e.search(this.re.host_fuzzy_test))&&(this.__index__<0||l<this.__index__)&&null!==(n=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=n.index+n[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__=\"\",this.__index__=i,this.__last_index__=n.index+n[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__[\"mailto:\"]&&0<=e.indexOf(\"@\")&&null!==(o=e.match(this.re.email_fuzzy))&&(i=o.index+o[1].length,a=o.index+o[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&a>this.__last_index__)&&(this.__schema__=\"mailto:\",this.__index__=i,this.__last_index__=a)),0<=this.__index__},y.prototype.pretest=function(e){return this.re.pretest.test(e)},y.prototype.testSchemaAt=function(e,t,n){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,n,this):0},y.prototype.match=function(e){var t=0,n=[];0<=this.__index__&&this.__text_cache__===e&&(n.push(g(this,t)),t=this.__last_index__);for(var o=t?e.slice(t):e;this.test(o);)n.push(g(this,t)),o=o.slice(this.__last_index__),t+=this.__last_index__;return n.length?n:null},y.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,t,n){return e!==n[t-1]}).reverse():(this.__tlds__=e.slice(),this.__tlds_replaced__=!0),c(this),this},y.prototype.normalize=function(e){e.schema||(e.url=\"http://\"+e.url),\"mailto:\"!==e.schema||/^mailto:/i.test(e.url)||(e.url=\"mailto:\"+e.url)},y.prototype.onCompile=function(){},e.exports=y},function(e,t,n){e.exports=n(40)},function(e,t,n){\"use strict\";var c=n(10);function o(){}function r(){}r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,i){if(i!==c){var a=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw a.name=\"Invariant Violation\",a}}function t(){return e}var n={array:e.isRequired=e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,o){\"use strict\";e.exports=function(e){var t={};t.src_Any=o(22).source,t.src_Cc=o(23).source,t.src_Z=o(24).source,t.src_P=o(25).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join(\"|\"),t.src_ZCc=[t.src_Z,t.src_Cc].join(\"|\");var n=\"[><|]\";return t.src_pseudo_letter=\"(?:(?![><|]|\"+t.src_ZPCc+\")\"+t.src_Any+\")\",t.src_ip4=\"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\",t.src_auth=\"(?:(?:(?!\"+t.src_ZCc+\"|[@/\\\\[\\\\]()]).)+@)?\",t.src_port=\"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\",t.src_host_terminator=\"(?=$|[><|]|\"+t.src_ZPCc+\")(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|\"+t.src_ZPCc+\"))\",t.src_path=\"(?:[/?#](?:(?!\"+t.src_ZCc+\"|\"+n+\"|[()[\\\\]{}.,\\\"'?!\\\\-]).|\\\\[(?:(?!\"+t.src_ZCc+\"|\\\\]).)*\\\\]|\\\\((?:(?!\"+t.src_ZCc+\"|[)]).)*\\\\)|\\\\{(?:(?!\"+t.src_ZCc+'|[}]).)*\\\\}|\\\\\"(?:(?!'+t.src_ZCc+'|[\"]).)+\\\\\"|\\\\\\'(?:(?!'+t.src_ZCc+\"|[']).)+\\\\'|\\\\'(?=\"+t.src_pseudo_letter+\"|[-]).|\\\\.{2,4}[a-zA-Z0-9%/]|\\\\.(?!\"+t.src_ZCc+\"|[.]).|\"+(e&&e[\"---\"]?\"\\\\-(?!--(?:[^-]|$))(?:-*)|\":\"\\\\-+|\")+\"\\\\,(?!\"+t.src_ZCc+\").|\\\\!(?!\"+t.src_ZCc+\"|[!]).|\\\\?(?!\"+t.src_ZCc+\"|[?]).)+|\\\\/)?\",t.src_email_name='[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*',t.src_xn=\"xn--[a-z0-9\\\\-]{1,59}\",t.src_domain_root=\"(?:\"+t.src_xn+\"|\"+t.src_pseudo_letter+\"{1,63})\",t.src_domain=\"(?:\"+t.src_xn+\"|(?:\"+t.src_pseudo_letter+\")|(?:\"+t.src_pseudo_letter+\"(?:-|\"+t.src_pseudo_letter+\"){0,61}\"+t.src_pseudo_letter+\"))\",t.src_host=\"(?:(?:(?:(?:\"+t.src_domain+\")\\\\.)*\"+t.src_domain+\"))\",t.tpl_host_fuzzy=\"(?:\"+t.src_ip4+\"|(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%)))\",t.tpl_host_no_ip_fuzzy=\"(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%))\",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test=\"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\"+t.src_ZPCc+\"|>|$))\",t.tpl_email_fuzzy='(^|[><|]|\"|\\\\(|'+t.src_ZCc+\")(\"+t.src_email_name+\"@\"+t.tpl_host_fuzzy_strict+\")\",t.tpl_link_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`||]|\"+t.src_ZPCc+\"))((?![$+<=>^`||])\"+t.tpl_host_port_fuzzy_strict+t.src_path+\")\",t.tpl_link_no_ip_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`||]|\"+t.src_ZPCc+\"))((?![$+<=>^`||])\"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+\")\",t}},function(e,t){e.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/},function(e,t){e.exports=/[\\0-\\x1F\\x7F-\\x9F]/},function(e,t){e.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/},function(e,t){e.exports=/[!-#%-\\*,-/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E44\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){\"use strict\";n.r(t);var m=n(1),S=n.n(m),o=n(0),f=n.n(o),E=n(3),C=n(4),r=n(2),L=n.n(r);function i(){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i),this.callBacks=[],this.suggestionCallback=void 0,this.editorFlag=!1,this.suggestionFlag=!1,this.closeAllModals=function(t){n.callBacks.forEach(function(e){e(t)})},this.init=function(e){var t=document.getElementById(e);t&&t.addEventListener(\"click\",function(){n.editorFlag=!0}),document&&(document.addEventListener(\"click\",function(){n.editorFlag?n.editorFlag=!1:(n.closeAllModals(),n.suggestionCallback&&n.suggestionCallback())}),document.addEventListener(\"keydown\",function(e){\"Escape\"===e.key&&n.closeAllModals()}))},this.onEditorClick=function(){n.closeModals(),!n.suggestionFlag&&n.suggestionCallback?n.suggestionCallback():n.suggestionFlag=!1},this.closeModals=function(e){n.closeAllModals(e)},this.registerCallBack=function(e){n.callBacks.push(e)},this.deregisterCallBack=function(t){n.callBacks=n.callBacks.filter(function(e){return e!==t})},this.setSuggestionCallback=function(e){n.suggestionCallback=e},this.removeSuggestionCallback=function(){n.suggestionCallback=void 0},this.onSuggestionClick=function(){n.suggestionFlag=!0}}function c(){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,c),this.inputFocused=!1,this.editorMouseDown=!1,this.onEditorMouseDown=function(){t.editorFocused=!0},this.onInputMouseDown=function(){t.inputFocused=!0},this.isEditorBlur=function(e){return\"INPUT\"!==e.target.tagName&&\"LABEL\"!==e.target.tagName&&\"TEXTAREA\"!==e.target.tagName||t.editorFocused?!(\"INPUT\"===e.target.tagName&&\"LABEL\"===e.target.tagName&&\"TEXTAREA\"===e.target.tagName||t.inputFocused)&&!(t.editorFocused=!1):!(t.inputFocused=!1)},this.isEditorFocused=function(){return!t.inputFocused||(t.inputFocused=!1)},this.isToolbarFocused=function(){return!t.editorFocused||(t.editorFocused=!1)},this.isInputFocused=function(){return t.inputFocused}}var a,l=[],k={onKeyDown:function(t){l.forEach(function(e){e(t)})},registerCallBack:function(e){l.push(e)},deregisterCallBack:function(t){l=l.filter(function(e){return e!==t})}},g=function(){a=!0},y=function(){a=!1},s=function(){return a};function D(e){var t=e.getData()&&e.getData().get(\"text-align\");return t?\"rdw-\".concat(t,\"-aligned-block\"):\"\"}function u(e,t){if(e)for(var n in e)!{}.hasOwnProperty.call(e,n)||t(n,e[n])}function p(e,t){var n=!1;if(e)for(var o in e)if({}.hasOwnProperty.call(e,o)&&t===o){n=!0;break}return n}function d(e){e.stopPropagation()}function h(e){return e[e.options[0]].icon}function M(e,o){if(e&&void 0===o)return e;var r={};return u(e,function(e,t){var n;n=t,\"[object Object]\"===Object.prototype.toString.call(n)?r[e]=M(t,o[e]):r[e]=void 0!==o[e]?o[e]:t}),r}var b=n(6),j=n.n(b),N=n(5);n(11);function v(e){return(v=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function I(e,t){return!t||\"object\"!==v(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function A(e,t){return(A=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var T=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=I(this,(e=O(i)).call.apply(e,[this].concat(n)))).onClick=function(){var e=r.props,t=e.disabled,n=e.onClick,o=e.value;t||n(o)},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&A(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"render\",value:function(){var e,t=this.props,n=t.children,o=t.className,r=t.activeClassName,i=t.active,a=t.disabled,c=t.title;return S.a.createElement(\"div\",{className:L()(\"rdw-option-wrapper\",o,(w(e={},\"rdw-option-active \".concat(r),i),w(e,\"rdw-option-disabled\",a),e)),onClick:this.onClick,\"aria-selected\":i,title:c},n)}}])&&x(e.prototype,t),n&&x(e,n),i}();T.propTypes={onClick:f.a.func.isRequired,children:f.a.any,value:f.a.string,className:f.a.string,activeClassName:f.a.string,active:f.a.bool,disabled:f.a.bool,title:f.a.string},T.defaultProps={activeClassName:\"\"};n(12);function z(e){return(z=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function _(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function P(e,t){return!t||\"object\"!==z(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function U(e){return(U=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Y(e,t){return(Y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var F=function(){function i(){var e,o;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return(o=P(this,(e=U(i)).call.apply(e,[this].concat(n)))).state={highlighted:-1},o.onChange=function(e){var t=o.props.onChange;t&&t(e),o.toggleExpansion()},o.setHighlighted=function(e){o.setState({highlighted:e})},o.toggleExpansion=function(){var e=o.props,t=e.doExpand,n=e.doCollapse;e.expanded?n():t()},o}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Y(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.expanded;e.expanded&&!t&&this.setState({highlighted:-1})}},{key:\"render\",value:function(){var n=this,e=this.props,t=e.expanded,o=e.children,r=e.className,i=e.optionWrapperClassName,a=e.ariaLabel,c=e.onExpandEvent,l=e.title,s=this.state.highlighted,u=o.slice(1,o.length);return S.a.createElement(\"div\",{className:L()(\"rdw-dropdown-wrapper\",r),\"aria-expanded\":t,\"aria-label\":a||\"rdw-dropdown\"},S.a.createElement(\"a\",{className:\"rdw-dropdown-selectedtext\",onClick:c,title:l},o[0],S.a.createElement(\"div\",{className:L()({\"rdw-dropdown-carettoclose\":t,\"rdw-dropdown-carettoopen\":!t})})),t?S.a.createElement(\"ul\",{className:L()(\"rdw-dropdown-optionwrapper\",i),onClick:d},S.a.Children.map(u,function(e,t){return e&&S.a.cloneElement(e,{onSelect:n.onChange,highlighted:s===t,setHighlighted:n.setHighlighted,index:t})})):void 0)}}])&&_(e.prototype,t),n&&_(e,n),i}();F.propTypes={children:f.a.any,onChange:f.a.func,className:f.a.string,expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,optionWrapperClassName:f.a.string,ariaLabel:f.a.string,title:f.a.string};n(13);function R(e){return(R=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function H(e,t){return!t||\"object\"!==R(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Z(e){return(Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function W(e,t){return(W=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var G=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=H(this,(e=Z(r)).call.apply(e,[this].concat(n)))).onClick=function(e){var t=i.props,n=t.onSelect,o=t.onClick,r=t.value;t.disabled||(n&&n(r),o&&(e.stopPropagation(),o(r)))},i.setHighlighted=function(){var e=i.props;(0,e.setHighlighted)(e.index)},i.resetHighlighted=function(){(0,i.props.setHighlighted)(-1)},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&W(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"render\",value:function(){var e,t=this.props,n=t.children,o=t.active,r=t.disabled,i=t.highlighted,a=t.className,c=t.activeClassName,l=t.disabledClassName,s=t.highlightedClassName,u=t.title;return S.a.createElement(\"li\",{className:L()(\"rdw-dropdownoption-default\",a,(B(e={},\"rdw-dropdownoption-active \".concat(c),o),B(e,\"rdw-dropdownoption-highlighted \".concat(s),i),B(e,\"rdw-dropdownoption-disabled \".concat(l),r),e)),onMouseEnter:this.setHighlighted,onMouseLeave:this.resetHighlighted,onClick:this.onClick,title:u},n)}}])&&Q(e.prototype,t),n&&Q(e,n),r}();G.propTypes={children:f.a.any,value:f.a.any,onClick:f.a.func,onSelect:f.a.func,setHighlighted:f.a.func,index:f.a.number,disabled:f.a.bool,active:f.a.bool,highlighted:f.a.bool,className:f.a.string,activeClassName:f.a.string,disabledClassName:f.a.string,highlightedClassName:f.a.string,title:f.a.string},G.defaultProps={activeClassName:\"\",disabledClassName:\"\",highlightedClassName:\"\"};n(14);function J(e){return(J=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function V(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function q(e,t){return!t||\"object\"!==J(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function K(e){return(K=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function X(e,t){return(X=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var $=function(){function e(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),q(this,K(e).apply(this,arguments))}var t,n,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&X(e,t)}(e,m[\"Component\"]),t=e,(n=[{key:\"renderInFlatList\",value:function(){var e=this.props,n=e.config,o=e.currentState,r=e.onChange,i=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-inline-wrapper\",n.className),\"aria-label\":\"rdw-inline-control\"},n.options.map(function(e,t){return S.a.createElement(T,{key:t,value:e,onClick:r,className:L()(n[e].className),active:!0===o[e]||\"MONOSPACE\"===e&&o.CODE,title:n[e].title||i[\"components.controls.inline.\".concat(e)]},S.a.createElement(\"img\",{alt:\"\",src:n[e].icon}))}))}},{key:\"renderInDropDown\",value:function(){var e=this.props,n=e.config,t=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState,c=e.onChange,l=e.translations,s=n.className,u=n.dropdownClassName,p=n.title;return S.a.createElement(F,{className:L()(\"rdw-inline-dropdown\",s),optionWrapperClassName:L()(u),onChange:c,expanded:t,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-inline-control\",title:p},S.a.createElement(\"img\",{src:h(n),alt:\"\"}),n.options.map(function(e,t){return S.a.createElement(G,{key:t,value:e,className:L()(\"rdw-inline-dropdownoption\",n[e].className),active:!0===a[e]||\"MONOSPACE\"===e&&a.CODE,title:n[e].title||l[\"components.controls.inline.\".concat(e)]},S.a.createElement(\"img\",{src:n[e].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&V(t.prototype,n),o&&V(t,o),e}();function ee(e){return(ee=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function te(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ne(e,t){return!t||\"object\"!==ee(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function oe(e){return(oe=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function re(e,t){return(re=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}$.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var ie=function(){function r(e){var l;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(l=ne(this,oe(r).call(this,e))).onExpandEvent=function(){l.signalExpanded=!l.state.expanded},l.expandCollapse=function(){l.setState({expanded:l.signalExpanded}),l.signalExpanded=!1},l.toggleInlineStyle=function(e){var t=\"monospace\"===e?\"CODE\":e.toUpperCase(),n=l.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleInlineStyle(o,t);if(\"subscript\"===e||\"superscript\"===e){var a=\"subscript\"===e?\"SUPERSCRIPT\":\"SUBSCRIPT\",c=E.Modifier.removeInlineStyle(i.getCurrentContent(),i.getSelection(),a);i=E.EditorState.push(i,c,\"change-inline-style\")}i&&r(i)},l.changeKeys=function(e){if(e){var n={};return u(e,function(e,t){n[\"CODE\"===e?\"monospace\":e.toLowerCase()]=t}),n}},l.doExpand=function(){l.setState({expanded:!0})},l.doCollapse=function(){l.setState({expanded:!1})};var t=l.props,n=t.editorState,o=t.modalHandler;return l.state={currentStyles:n?l.changeKeys(Object(C.getSelectionInlineStyle)(n)):{}},o.registerCallBack(l.expandCollapse),l}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&re(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentStyles:this.changeKeys(Object(C.getSelectionInlineStyle)(t))})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentStyles,a=t.component||$;return S.a.createElement(a,{config:t,translations:n,currentState:i,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.toggleInlineStyle})}}])&&te(e.prototype,t),n&&te(e,n),r}();ie.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(15);function ae(e){return(ae=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ce(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function le(e,t){return!t||\"object\"!==ae(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function se(e){return(se=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ue(e,t){return(ue=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var pe=function(){function n(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(t=le(this,se(n).call(this,e))).getBlockTypes=function(e){return[{label:\"Normal\",displayName:e[\"components.controls.blocktype.normal\"]},{label:\"H1\",displayName:e[\"components.controls.blocktype.h1\"]},{label:\"H2\",displayName:e[\"components.controls.blocktype.h2\"]},{label:\"H3\",displayName:e[\"components.controls.blocktype.h3\"]},{label:\"H4\",displayName:e[\"components.controls.blocktype.h4\"]},{label:\"H5\",displayName:e[\"components.controls.blocktype.h5\"]},{label:\"H6\",displayName:e[\"components.controls.blocktype.h6\"]},{label:\"Blockquote\",displayName:e[\"components.controls.blocktype.blockquote\"]},{label:\"Code\",displayName:e[\"components.controls.blocktype.code\"]}]},t.state={blockTypes:t.getBlockTypes(e.translations)},t}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ue(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.translations;t!==e.translations&&this.setState({blockTypes:this.getBlockTypes(t)})}},{key:\"renderFlat\",value:function(e){var t=this.props,n=t.config.className,o=t.onChange,r=t.currentState.blockType;return S.a.createElement(\"div\",{className:L()(\"rdw-inline-wrapper\",n)},e.map(function(e,t){return S.a.createElement(T,{key:t,value:e.label,active:r===e.label,onClick:o},e.displayName)}))}},{key:\"renderInDropdown\",value:function(e){var t=this.props,n=t.config,o=n.className,r=n.dropdownClassName,i=n.title,a=t.currentState.blockType,c=t.expanded,l=t.doExpand,s=t.onExpandEvent,u=t.doCollapse,p=t.onChange,d=t.translations,m=this.state.blockTypes.filter(function(e){return e.label===a}),f=m&&m[0]&&m[0].displayName;return S.a.createElement(\"div\",{className:\"rdw-block-wrapper\",\"aria-label\":\"rdw-block-control\"},S.a.createElement(F,{className:L()(\"rdw-block-dropdown\",o),optionWrapperClassName:L()(r),onChange:p,expanded:c,doExpand:l,doCollapse:u,onExpandEvent:s,title:i||d[\"components.controls.blocktype.blocktype\"]},S.a.createElement(\"span\",null,f||d[\"components.controls.blocktype.blocktype\"]),e.map(function(e,t){return S.a.createElement(G,{active:a===e.label,value:e.label,key:t},e.displayName)})))}},{key:\"render\",value:function(){var n=this.props.config,e=n.inDropdown,t=this.state.blockTypes.filter(function(e){var t=e.label;return-1<n.options.indexOf(t)});return e?this.renderInDropdown(t):this.renderFlat(t)}}])&&ce(e.prototype,t),o&&ce(e,o),n}();pe.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var de=pe;function me(e){return(me=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function fe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ge(e,t){return!t||\"object\"!==me(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function ye(e){return(ye=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function he(e,t){return(he=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Me=function(){function o(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(a=ge(this,ye(o).call(this,e))).onExpandEvent=function(){a.signalExpanded=!a.state.expanded},a.expandCollapse=function(){a.setState({expanded:a.signalExpanded}),a.signalExpanded=!1},a.blocksTypes=[{label:\"Normal\",style:\"unstyled\"},{label:\"H1\",style:\"header-one\"},{label:\"H2\",style:\"header-two\"},{label:\"H3\",style:\"header-three\"},{label:\"H4\",style:\"header-four\"},{label:\"H5\",style:\"header-five\"},{label:\"H6\",style:\"header-six\"},{label:\"Blockquote\",style:\"blockquote\"},{label:\"Code\",style:\"code\"}],a.doExpand=function(){a.setState({expanded:!0})},a.doCollapse=function(){a.setState({expanded:!1})},a.toggleBlockType=function(t){var e=a.blocksTypes.find(function(e){return e.label===t}).style,n=a.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleBlockType(o,e);i&&r(i)};var t=e.editorState,n=e.modalHandler;return a.state={expanded:!1,currentBlockType:t?Object(C.getSelectedBlocksType)(t):\"unstyled\"},n.registerCallBack(a.expandCollapse),a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&he(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentBlockType:Object(C.getSelectedBlocksType)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentBlockType,a=t.component||de,c=this.blocksTypes.find(function(e){return e.style===i});return S.a.createElement(a,{config:t,translations:n,currentState:{blockType:c&&c.label},onChange:this.toggleBlockType,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&fe(e.prototype,t),n&&fe(e,n),o}();Me.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var be=Me;n(16);function je(e){return(je=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ne(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Se(e,t){return!t||\"object\"!==je(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Ee(e){return(Ee=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ce(e,t){return(Ce=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Le=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Se(this,(e=Ee(i)).call.apply(e,[this].concat(o)))).state={defaultFontSize:void 0},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ce(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){var e=document.getElementsByClassName(\"DraftEditor-root\");if(e&&0<e.length){var t=window.getComputedStyle(e[0]).getPropertyValue(\"font-size\");t=t.substring(0,t.length-2),this.setState({defaultFontSize:t})}}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.dropdownClassName,i=t.options,a=t.title,c=e.onChange,l=e.expanded,s=e.doCollapse,u=e.onExpandEvent,p=e.doExpand,d=e.translations,m=this.props.currentState.fontSize,f=this.state.defaultFontSize;return f=Number(f),m=m||i&&0<=i.indexOf(f)&&f,S.a.createElement(\"div\",{className:\"rdw-fontsize-wrapper\",\"aria-label\":\"rdw-font-size-control\"},S.a.createElement(F,{className:L()(\"rdw-fontsize-dropdown\",o),optionWrapperClassName:L()(r),onChange:c,expanded:l,doExpand:p,doCollapse:s,onExpandEvent:u,title:a||d[\"components.controls.fontsize.fontsize\"]},m?S.a.createElement(\"span\",null,m):S.a.createElement(\"img\",{src:n,alt:\"\"}),i.map(function(e,t){return S.a.createElement(G,{className:\"rdw-fontsize-option\",active:m===e,value:e,key:t},e)})))}}])&&Ne(e.prototype,t),n&&Ne(e,n),i}();function ke(e){return(ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function De(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ve(e,t){return!t||\"object\"!==ke(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function we(e){return(we=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function xe(e,t){return(xe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}Le.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Ie=function(){function o(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(i=ve(this,we(o).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontSize=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=Object(C.toggleCustomInlineStyle)(n,\"fontSize\",e);r&&o(r)};var t=e.editorState,n=e.modalHandler;return i.state={expanded:void 0,currentFontSize:t?Object(C.getSelectionCustomInlineStyle)(t,[\"FONTSIZE\"]).FONTSIZE:void 0},n.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&xe(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentFontSize:Object(C.getSelectionCustomInlineStyle)(t,[\"FONTSIZE\"]).FONTSIZE})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentFontSize,a=t.component||Le,c=i&&Number(i.substring(9));return S.a.createElement(a,{config:t,translations:n,currentState:{fontSize:c},onChange:this.toggleFontSize,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&De(e.prototype,t),n&&De(e,n),o}();Ie.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(17);function Oe(e){return(Oe=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ae(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Te(e,t){return!t||\"object\"!==Oe(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function ze(e){return(ze=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _e(e,t){return(_e=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Pe=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Te(this,(e=ze(i)).call.apply(e,[this].concat(o)))).state={defaultFontFamily:void 0},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_e(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){var e=document.getElementsByClassName(\"DraftEditor-root\");if(e&&0<e.length){var t=window.getComputedStyle(e[0]).getPropertyValue(\"font-family\");this.setState({defaultFontFamily:t})}}},{key:\"render\",value:function(){var t=this.state.defaultFontFamily,e=this.props,n=e.config,o=n.className,r=n.dropdownClassName,i=n.options,a=n.title,c=e.translations,l=e.onChange,s=e.expanded,u=e.doCollapse,p=e.onExpandEvent,d=e.doExpand,m=this.props.currentState.fontFamily;return m=m||i&&t&&i.some(function(e){return e.toLowerCase()===t.toLowerCase()})&&t,S.a.createElement(\"div\",{className:\"rdw-fontfamily-wrapper\",\"aria-label\":\"rdw-font-family-control\"},S.a.createElement(F,{className:L()(\"rdw-fontfamily-dropdown\",o),optionWrapperClassName:L()(\"rdw-fontfamily-optionwrapper\",r),onChange:l,expanded:s,doExpand:d,doCollapse:u,onExpandEvent:p,title:a||c[\"components.controls.fontfamily.fontfamily\"]},S.a.createElement(\"span\",{className:\"rdw-fontfamily-placeholder\"},m||c[\"components.controls.fontfamily.fontfamily\"]),i.map(function(e,t){return S.a.createElement(G,{active:m===e,value:e,key:t},e)})))}}])&&Ae(e.prototype,t),n&&Ae(e,n),i}();Pe.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doExpand:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Ue=Pe;function Ye(e){return(Ye=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Fe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Re(e,t){return!t||\"object\"!==Ye(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Be(e){return(Be=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Qe(e,t){return(Qe=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var He=function(){function o(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),(i=Re(this,Be(o).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontFamily=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=Object(C.toggleCustomInlineStyle)(n,\"fontFamily\",e);r&&o(r)};var t=e.editorState,n=e.modalHandler;return i.state={expanded:void 0,currentFontFamily:t?Object(C.getSelectionCustomInlineStyle)(t,[\"FONTFAMILY\"]).FONTFAMILY:void 0},n.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Qe(e,t)}(o,m[\"Component\"]),e=o,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentFontFamily:Object(C.getSelectionCustomInlineStyle)(t,[\"FONTFAMILY\"]).FONTFAMILY})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentFontFamily,a=t.component||Ue,c=i&&i.substring(11);return S.a.createElement(a,{translations:n,config:t,currentState:{fontFamily:c},onChange:this.toggleFontFamily,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&Fe(e.prototype,t),n&&Fe(e,n),o}();He.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(18);function Ze(e){return(Ze=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function We(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ge(e,t){return!t||\"object\"!==Ze(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Je(e){return(Je=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ve(e,t){return(Ve=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var qe=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Ge(this,(e=Je(i)).call.apply(e,[this].concat(o)))).options=[\"unordered\",\"ordered\",\"indent\",\"outdent\"],t.toggleBlockType=function(e){(0,t.props.onChange)(e)},t.indent=function(){(0,t.props.onChange)(\"indent\")},t.outdent=function(){(0,t.props.onChange)(\"outdent\")},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ve(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=e.currentState.listType,o=e.translations,r=e.indentDisabled,i=e.outdentDisabled,a=t.options,c=t.unordered,l=t.ordered,s=t.indent,u=t.outdent,p=t.className;return S.a.createElement(\"div\",{className:L()(\"rdw-list-wrapper\",p),\"aria-label\":\"rdw-list-control\"},0<=a.indexOf(\"unordered\")&&S.a.createElement(T,{value:\"unordered\",onClick:this.toggleBlockType,className:L()(c.className),active:\"unordered\"===n,title:c.title||o[\"components.controls.list.unordered\"]},S.a.createElement(\"img\",{src:c.icon,alt:\"\"})),0<=a.indexOf(\"ordered\")&&S.a.createElement(T,{value:\"ordered\",onClick:this.toggleBlockType,className:L()(l.className),active:\"ordered\"===n,title:l.title||o[\"components.controls.list.ordered\"]},S.a.createElement(\"img\",{src:l.icon,alt:\"\"})),0<=a.indexOf(\"indent\")&&S.a.createElement(T,{onClick:this.indent,disabled:r,className:L()(s.className),title:s.title||o[\"components.controls.list.indent\"]},S.a.createElement(\"img\",{src:s.icon,alt:\"\"})),0<=a.indexOf(\"outdent\")&&S.a.createElement(T,{onClick:this.outdent,disabled:i,className:L()(u.className),title:u.title||o[\"components.controls.list.outdent\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var n=this,e=this.props,o=e.config,t=e.expanded,r=e.doCollapse,i=e.doExpand,a=e.onExpandEvent,c=e.onChange,l=e.currentState.listType,s=e.translations,u=o.options,p=o.className,d=o.dropdownClassName,m=o.title;return S.a.createElement(F,{className:L()(\"rdw-list-dropdown\",p),optionWrapperClassName:L()(d),onChange:c,expanded:t,doExpand:i,doCollapse:r,onExpandEvent:a,\"aria-label\":\"rdw-list-control\",title:m||s[\"components.controls.list.list\"]},S.a.createElement(\"img\",{src:h(o),alt:\"\"}),this.options.filter(function(e){return 0<=u.indexOf(e)}).map(function(e,t){return S.a.createElement(G,{key:t,value:e,disabled:n.props[\"\".concat(e,\"Disabled\")],className:L()(\"rdw-list-dropdownOption\",o[e].className),active:l===e,title:o[e].title||s[\"components.controls.list.\".concat(e)]},S.a.createElement(\"img\",{src:o[e].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&We(e.prototype,t),n&&We(e,n),i}();function Ke(e){return(Ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Xe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function $e(e,t){return!t||\"object\"!==Ke(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function et(e){return(et=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function tt(e,t){return(tt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}qe.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object,indentDisabled:f.a.bool,outdentDisabled:f.a.bool};var nt=function(){function r(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=$e(this,et(r).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(e){\"unordered\"===e?i.toggleBlockType(\"unordered-list-item\"):\"ordered\"===e?i.toggleBlockType(\"ordered-list-item\"):\"indent\"===e?i.adjustDepth(1):i.adjustDepth(-1)},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleBlockType=function(e){var t=i.props,n=t.onChange,o=t.editorState,r=E.RichUtils.toggleBlockType(o,e);r&&n(r)},i.adjustDepth=function(e){var t=i.props,n=t.onChange,o=t.editorState,r=Object(C.changeDepth)(o,e,4);r&&n(r)},i.isIndentDisabled=function(){var e=i.props.editorState,t=i.state.currentBlock,n=Object(C.getBlockBeforeSelectedBlock)(e);return!n||!Object(C.isListBlock)(t)||n.get(\"type\")!==t.get(\"type\")||n.get(\"depth\")<t.get(\"depth\")},i.isOutdentDisabled=function(){var e=i.state.currentBlock;return!e||!Object(C.isListBlock)(e)||e.get(\"depth\")<=0};var t=i.props,n=t.editorState,o=t.modalHandler;return i.state={expanded:!1,currentBlock:n?Object(C.getSelectedBlock)(n):void 0},o.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&tt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentBlock:Object(C.getSelectedBlock)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e,t=this.props,n=t.config,o=t.translations,r=this.state,i=r.expanded,a=r.currentBlock,c=n.component||qe;\"unordered-list-item\"===a.get(\"type\")?e=\"unordered\":\"ordered-list-item\"===a.get(\"type\")&&(e=\"ordered\");var l=this.isIndentDisabled(),s=this.isOutdentDisabled();return S.a.createElement(c,{config:n,translations:o,currentState:{listType:e},expanded:i,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange,indentDisabled:l,outdentDisabled:s})}}])&&Xe(e.prototype,t),n&&Xe(e,n),r}();nt.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(19);function ot(e){return(ot=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function rt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function it(e,t){return!t||\"object\"!==ot(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function at(e){return(at=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ct(e,t){return(ct=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var lt=function(){function e(){return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),it(this,at(e).apply(this,arguments))}var t,n,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ct(e,t)}(e,m[\"Component\"]),t=e,(n=[{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.left,r=t.center,i=t.right,a=t.justify,c=t.className,l=e.onChange,s=e.currentState.textAlignment,u=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-text-align-wrapper\",c),\"aria-label\":\"rdw-textalign-control\"},0<=n.indexOf(\"left\")&&S.a.createElement(T,{value:\"left\",className:L()(o.className),active:\"left\"===s,onClick:l,title:o.title||u[\"components.controls.textalign.left\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"center\")&&S.a.createElement(T,{value:\"center\",className:L()(r.className),active:\"center\"===s,onClick:l,title:r.title||u[\"components.controls.textalign.center\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})),0<=n.indexOf(\"right\")&&S.a.createElement(T,{value:\"right\",className:L()(i.className),active:\"right\"===s,onClick:l,title:i.title||u[\"components.controls.textalign.right\"]},S.a.createElement(\"img\",{src:i.icon,alt:\"\"})),0<=n.indexOf(\"justify\")&&S.a.createElement(T,{value:\"justify\",className:L()(a.className),active:\"justify\"===s,onClick:l,title:a.title||u[\"components.controls.textalign.justify\"]},S.a.createElement(\"img\",{src:a.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.config,n=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState.textAlignment,c=e.onChange,l=e.translations,s=t.options,u=t.left,p=t.center,d=t.right,m=t.justify,f=t.className,g=t.dropdownClassName,y=t.title;return S.a.createElement(F,{className:L()(\"rdw-text-align-dropdown\",f),optionWrapperClassName:L()(g),onChange:c,expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-textalign-control\",title:y||l[\"components.controls.textalign.textalign\"]},S.a.createElement(\"img\",{src:a&&t[a]&&t[a].icon||h(t),alt:\"\"}),0<=s.indexOf(\"left\")&&S.a.createElement(G,{value:\"left\",active:\"left\"===a,className:L()(\"rdw-text-align-dropdownOption\",u.className),title:u.title||l[\"components.controls.textalign.left\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"center\")&&S.a.createElement(G,{value:\"center\",active:\"center\"===a,className:L()(\"rdw-text-align-dropdownOption\",p.className),title:p.title||l[\"components.controls.textalign.center\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=s.indexOf(\"right\")&&S.a.createElement(G,{value:\"right\",active:\"right\"===a,className:L()(\"rdw-text-align-dropdownOption\",d.className),title:d.title||l[\"components.controls.textalign.right\"]},S.a.createElement(\"img\",{src:d.icon,alt:\"\"})),0<=s.indexOf(\"justify\")&&S.a.createElement(G,{value:\"justify\",active:\"justify\"===a,className:L()(\"rdw-text-align-dropdownOption\",m.className),title:m.title||l[\"components.controls.textalign.justify\"]},S.a.createElement(\"img\",{src:m.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&rt(t.prototype,n),o&&rt(t,o),e}();function st(e){return(st=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ut(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function pt(e,t){return!t||\"object\"!==st(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function dt(e){return(dt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function mt(e,t){return(mt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}lt.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var ft=function(){function n(e){var r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(r=pt(this,dt(n).call(this,e))).onExpandEvent=function(){r.signalExpanded=!r.state.expanded},r.expandCollapse=function(){r.setState({expanded:r.signalExpanded}),r.signalExpanded=!1},r.doExpand=function(){r.setState({expanded:!0})},r.doCollapse=function(){r.setState({expanded:!1})},r.addBlockAlignmentData=function(e){var t=r.props,n=t.editorState,o=t.onChange;o(r.state.currentTextAlignment!==e?Object(C.setBlockData)(n,{\"text-align\":e}):Object(C.setBlockData)(n,{\"text-align\":void 0}))};var t=r.props.modalHandler;return r.state={currentTextAlignment:void 0},t.registerCallBack(r.expandCollapse),r}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&mt(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t!==e.editorState&&this.setState({currentTextAlignment:Object(C.getSelectedBlocksMetadata)(t).get(\"text-align\")})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.expanded,i=o.currentTextAlignment,a=t.component||lt;return S.a.createElement(a,{config:t,translations:n,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{textAlignment:i},onChange:this.addBlockAlignmentData})}}])&&ut(e.prototype,t),o&&ut(e,o),n}();ft.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};n(20);function gt(e){return(gt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function yt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ht(e,t){return!t||\"object\"!==gt(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Mt(e){return(Mt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function bt(e,t){return(bt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var jt=function(){function r(){var e,u;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(u=ht(this,(e=Mt(r)).call.apply(e,[this].concat(n)))).state={currentStyle:\"color\"},u.onChange=function(e){(0,u.props.onChange)(u.state.currentStyle,e)},u.setCurrentStyleColor=function(){u.setState({currentStyle:\"color\"})},u.setCurrentStyleBgcolor=function(){u.setState({currentStyle:\"bgcolor\"})},u.renderModal=function(){var e=u.props,t=e.config,n=t.popupClassName,o=t.colors,r=e.currentState,i=r.color,a=r.bgColor,c=e.translations,l=u.state.currentStyle,s=\"color\"===l?i:a;return S.a.createElement(\"div\",{className:L()(\"rdw-colorpicker-modal\",n),onClick:d},S.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-header\"},S.a.createElement(\"span\",{className:L()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"color\"===l}),onClick:u.setCurrentStyleColor},c[\"components.controls.colorpicker.text\"]),S.a.createElement(\"span\",{className:L()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"bgcolor\"===l}),onClick:u.setCurrentStyleBgcolor},c[\"components.controls.colorpicker.background\"])),S.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-options\"},o.map(function(e,t){return S.a.createElement(T,{value:e,key:t,className:\"rdw-colorpicker-option\",activeClassName:\"rdw-colorpicker-option-active\",active:s===e,onClick:u.onChange},S.a.createElement(\"span\",{style:{backgroundColor:e},className:\"rdw-colorpicker-cube\"}))})))},u}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&bt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){this.props.expanded&&!e.expanded&&this.setState({currentStyle:\"color\"})}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-colorpicker-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-color-picker\",title:r||c[\"components.controls.colorpicker.colorpicker\"]},S.a.createElement(T,{onClick:a,className:L()(o)},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderModal():void 0)}}])&&yt(e.prototype,t),n&&yt(e,n),r}();jt.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,currentState:f.a.object,translations:f.a.object};var Nt=jt;function St(e){return(St=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Et(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ct(e,t){return!t||\"object\"!==St(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Lt(e){return(Lt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function kt(e,t){return(kt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Dt=function(){function r(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(a=Ct(this,Lt(r).call(this,e))).state={expanded:!1,currentColor:void 0,currentBgColor:void 0},a.onExpandEvent=function(){a.signalExpanded=!a.state.expanded},a.expandCollapse=function(){a.setState({expanded:a.signalExpanded}),a.signalExpanded=!1},a.doExpand=function(){a.setState({expanded:!0})},a.doCollapse=function(){a.setState({expanded:!1})},a.toggleColor=function(e,t){var n=a.props,o=n.editorState,r=n.onChange,i=Object(C.toggleCustomInlineStyle)(o,e,t);i&&r(i),a.doCollapse()};var t=e.editorState,n=e.modalHandler,o={expanded:!1,currentColor:void 0,currentBgColor:void 0};return t&&(o.currentColor=Object(C.getSelectionCustomInlineStyle)(t,[\"COLOR\"]).COLOR,o.currentBgColor=Object(C.getSelectionCustomInlineStyle)(t,[\"BGCOLOR\"]).BGCOLOR),a.state=o,n.registerCallBack(a.expandCollapse),a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&kt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentColor:Object(C.getSelectionCustomInlineStyle)(t,[\"COLOR\"]).COLOR,currentBgColor:Object(C.getSelectionCustomInlineStyle)(t,[\"BGCOLOR\"]).BGCOLOR})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.currentColor,i=o.currentBgColor,a=o.expanded,c=t.component||Nt,l=r&&r.substring(6),s=i&&i.substring(8);return S.a.createElement(c,{config:t,translations:n,onChange:this.toggleColor,expanded:a,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{color:l,bgColor:s}})}}])&&Et(e.prototype,t),n&&Et(e,n),r}();Dt.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var vt=Dt,wt=n(7),xt=n.n(wt);n(26);function It(e){return(It=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ot(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function At(e,t){return!t||\"object\"!==It(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Tt(e){return(Tt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function zt(e,t){return(zt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _t=function(){function r(){var e,a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(a=At(this,(e=Tt(r)).call.apply(e,[this].concat(n)))).state={showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:a.props.config.defaultTargetOption},a.removeLink=function(){(0,a.props.onChange)(\"unlink\")},a.addLink=function(){var e=a.props.onChange,t=a.state;e(\"link\",t.linkTitle,t.linkTarget,t.linkTargetOption)},a.updateValue=function(e){var t,n,o;a.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},a.updateTargetOption=function(e){a.setState({linkTargetOption:e.target.checked?\"_blank\":\"_self\"})},a.hideModal=function(){a.setState({showModal:!1})},a.signalExpandShowModal=function(){var e=a.props,t=e.onExpandEvent,n=e.currentState,o=n.link,r=n.selectionText,i=a.state.linkTargetOption;t(),a.setState({showModal:!0,linkTarget:o&&o.target||\"\",linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},a.forceExpandAndShowModal=function(){var e=a.props,t=e.doExpand,n=e.currentState,o=n.link,r=n.selectionText,i=a.state.linkTargetOption;t(),a.setState({showModal:!0,linkTarget:o&&o.target,linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&zt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){e.expanded&&!this.props.expanded&&this.setState({showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:this.props.config.defaultTargetOption})}},{key:\"renderAddLinkModal\",value:function(){var e=this.props,t=e.config.popupClassName,n=e.doCollapse,o=e.translations,r=this.state,i=r.linkTitle,a=r.linkTarget,c=r.linkTargetOption;return S.a.createElement(\"div\",{className:L()(\"rdw-link-modal\",t),onClick:d},S.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTitle\"},o[\"components.controls.link.linkTitle\"]),S.a.createElement(\"input\",{id:\"linkTitle\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTitle\",value:i}),S.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTarget\"},o[\"components.controls.link.linkTarget\"]),S.a.createElement(\"input\",{id:\"linkTarget\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTarget\",value:a}),S.a.createElement(\"label\",{className:\"rdw-link-modal-target-option\",htmlFor:\"openLinkInNewWindow\"},S.a.createElement(\"input\",{id:\"openLinkInNewWindow\",type:\"checkbox\",defaultChecked:\"_blank\"===c,value:\"_blank\",onChange:this.updateTargetOption}),S.a.createElement(\"span\",null,o[\"components.controls.link.linkTargetOption\"])),S.a.createElement(\"span\",{className:\"rdw-link-modal-buttonsection\"},S.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:this.addLink,disabled:!a||!i},o[\"generic.add\"]),S.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:n},o[\"generic.cancel\"])))}},{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.link,r=t.unlink,i=t.className,a=e.currentState,c=e.expanded,l=e.translations,s=this.state.showModal;return S.a.createElement(\"div\",{className:L()(\"rdw-link-wrapper\",i),\"aria-label\":\"rdw-link-control\"},0<=n.indexOf(\"link\")&&S.a.createElement(T,{value:\"unordered-list-item\",className:L()(o.className),onClick:this.signalExpandShowModal,\"aria-haspopup\":\"true\",\"aria-expanded\":s,title:o.title||l[\"components.controls.link.link\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"unlink\")&&S.a.createElement(T,{disabled:!a.link,value:\"ordered-list-item\",className:L()(r.className),onClick:this.removeLink,title:r.title||l[\"components.controls.link.unlink\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})),c&&s?this.renderAddLinkModal():void 0)}},{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.expanded,n=e.onExpandEvent,o=e.doCollapse,r=e.doExpand,i=e.onChange,a=e.config,c=e.currentState,l=e.translations,s=a.options,u=a.link,p=a.unlink,d=a.className,m=a.dropdownClassName,f=a.title,g=this.state.showModal;return S.a.createElement(\"div\",{className:\"rdw-link-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-link-control\",\"aria-expanded\":t,title:f},S.a.createElement(F,{className:L()(\"rdw-link-dropdown\",d),optionWrapperClassName:L()(m),onChange:i,expanded:t&&!g,doExpand:r,doCollapse:o,onExpandEvent:n},S.a.createElement(\"img\",{src:h(a),alt:\"\"}),0<=s.indexOf(\"link\")&&S.a.createElement(G,{onClick:this.forceExpandAndShowModal,className:L()(\"rdw-link-dropdownoption\",u.className),title:u.title||l[\"components.controls.link.link\"]},S.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"unlink\")&&S.a.createElement(G,{onClick:this.removeLink,disabled:!c.link,className:L()(\"rdw-link-dropdownoption\",p.className),title:p.title||l[\"components.controls.link.unlink\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"}))),t&&g?this.renderAddLinkModal():void 0)}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&Ot(e.prototype,t),n&&Ot(e,n),r}();_t.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var Pt=_t;function Ut(e){return(Ut=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Yt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Ft(e,t){return!t||\"object\"!==Ut(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Rt(e){return(Rt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Bt(e,t){return(Bt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Qt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function Ht(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zt(e){var t=Wt.match(e.target);return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Qt(Object(n),!0).forEach(function(e){Ht(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Qt(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({},e,{target:t&&t[0]&&t[0].url||e.target})}var Wt=xt()(),Gt=function(){function r(e){var d;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(d=Ft(this,Rt(r).call(this,e))).onExpandEvent=function(){d.signalExpanded=!d.state.expanded},d.onChange=function(e,t,n,o){var r=d.props.config.linkCallback;if(\"link\"===e){var i=(r||Zt)({title:t,target:n,targetOption:o});d.addLink(i.title,i.target,i.targetOption)}else d.removeLink()},d.getCurrentValues=function(){var e=d.props.editorState,t=d.state.currentEntity,n=e.getCurrentContent(),o={};if(t&&\"LINK\"===n.getEntity(t).get(\"type\")){o.link={};var r=t&&Object(C.getEntityRange)(e,t);o.link.target=t&&n.getEntity(t).get(\"data\").url,o.link.targetOption=t&&n.getEntity(t).get(\"data\").targetOption,o.link.title=r&&r.text}return o.selectionText=Object(C.getSelectionText)(e),o},d.doExpand=function(){d.setState({expanded:!0})},d.expandCollapse=function(){d.setState({expanded:d.signalExpanded}),d.signalExpanded=!1},d.doCollapse=function(){d.setState({expanded:!1})},d.removeLink=function(){var e=d.props,t=e.editorState,n=e.onChange,o=d.state.currentEntity,r=t.getSelection();if(o){var i=Object(C.getEntityRange)(t,o);r=r.getIsBackward()?r.merge({anchorOffset:i.end,focusOffset:i.start}):r.merge({anchorOffset:i.start,focusOffset:i.end}),n(E.RichUtils.toggleLink(t,r,null))}},d.addLink=function(e,t,n){var o=d.props,r=o.editorState,i=o.onChange,a=d.state.currentEntity,c=r.getSelection();if(a){var l=Object(C.getEntityRange)(r,a);c=c.getIsBackward()?c.merge({anchorOffset:l.end,focusOffset:l.start}):c.merge({anchorOffset:l.start,focusOffset:l.end})}var s=r.getCurrentContent().createEntity(\"LINK\",\"MUTABLE\",{url:t,targetOption:n}).getLastCreatedEntityKey(),u=E.Modifier.replaceText(r.getCurrentContent(),c,\"\".concat(e),r.getCurrentInlineStyle(),s),p=E.EditorState.push(r,u,\"insert-characters\");c=p.getSelection().merge({anchorOffset:c.get(\"anchorOffset\")+e.length,focusOffset:c.get(\"anchorOffset\")+e.length}),p=E.EditorState.acceptSelection(p,c),u=E.Modifier.insertText(p.getCurrentContent(),c,\" \",p.getCurrentInlineStyle(),void 0),i(E.EditorState.push(p,u,\"insert-characters\")),d.doCollapse()};var t=d.props,n=t.editorState,o=t.modalHandler;return d.state={expanded:!1,link:void 0,selectionText:void 0,currentEntity:n?Object(C.getSelectionEntity)(n):void 0},o.registerCallBack(d.expandCollapse),d}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Bt(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&t!==e.editorState&&this.setState({currentEntity:Object(C.getSelectionEntity)(t)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=this.getCurrentValues(),i=r.link,a=r.selectionText,c=t.component||Pt;return S.a.createElement(c,{config:t,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{link:i,selectionText:a},onChange:this.onChange})}}])&&Yt(e.prototype,t),n&&Yt(e,n),r}();Gt.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var Jt=Gt;n(27);function Vt(e){return(Vt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function qt(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Kt(e,t){return!t||\"object\"!==Vt(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Xt(e){return(Xt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function $t(e,t){return($t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var en=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=Kt(this,(e=Xt(i)).call.apply(e,[this].concat(n)))).state={embeddedLink:\"\",height:r.props.config.defaultSize.height,width:r.props.config.defaultSize.width},r.onChange=function(){var e=r.props.onChange,t=r.state;e(t.embeddedLink,t.height,t.width)},r.updateValue=function(e){var t,n,o;r.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&$t(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props,n=t.expanded,o=t.config;if(!n&&e.expanded){var r=o.defaultSize,i=r.height,a=r.width;this.setState({embeddedLink:\"\",height:i,width:a})}}},{key:\"rendeEmbeddedLinkModal\",value:function(){var e=this.state,t=e.embeddedLink,n=e.height,o=e.width,r=this.props,i=r.config.popupClassName,a=r.doCollapse,c=r.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-embedded-modal\",i),onClick:d},S.a.createElement(\"div\",{className:\"rdw-embedded-modal-header\"},S.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-option\"},c[\"components.controls.embedded.embeddedlink\"],S.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-label\"}))),S.a.createElement(\"div\",{className:\"rdw-embedded-modal-link-section\"},S.a.createElement(\"span\",{className:\"rdw-embedded-modal-link-input-wrapper\"},S.a.createElement(\"input\",{className:\"rdw-embedded-modal-link-input\",placeholder:c[\"components.controls.embedded.enterlink\"],onChange:this.updateValue,onBlur:this.updateValue,value:t,name:\"embeddedLink\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"div\",{className:\"rdw-embedded-modal-size\"},S.a.createElement(\"span\",null,S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:n,name:\"height\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Height\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"span\",null,S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:o,name:\"width\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Width\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")))),S.a.createElement(\"span\",{className:\"rdw-embedded-modal-btn-section\"},S.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:this.onChange,disabled:!t||!n||!o},c[\"generic.add\"]),S.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:a},c[\"generic.cancel\"])))}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-embedded-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-embedded-control\"},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a,title:r||c[\"components.controls.embedded.embedded\"]},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.rendeEmbeddedLinkModal():void 0)}}])&&qt(e.prototype,t),n&&qt(e,n),i}();en.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object,doCollapse:f.a.func};var tn=en;function nn(e){return(nn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function on(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function rn(e,t){return!t||\"object\"!==nn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function an(e){return(an=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function cn(e,t){return(cn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var ln=function(){function r(){var e,s;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(s=rn(this,(e=an(r)).call.apply(e,[this].concat(n)))).state={expanded:!1},s.onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.addEmbeddedLink=function(e,t,n){var o=s.props,r=o.editorState,i=o.onChange,a=o.config.embedCallback,c=a?a(e):e,l=r.getCurrentContent().createEntity(\"EMBEDDED_LINK\",\"MUTABLE\",{src:c,height:t,width:n}).getLastCreatedEntityKey();i(E.AtomicBlockUtils.insertAtomicBlock(r,l,\" \")),s.doCollapse()},s}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&cn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||tn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addEmbeddedLink,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&on(e.prototype,t),n&&on(e,n),r}();ln.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var sn=ln;n(28);function un(e){return(un=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function pn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function dn(e,t){return!t||\"object\"!==un(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function mn(e){return(mn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function fn(e,t){return(fn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var gn=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=dn(this,(e=mn(i)).call.apply(e,[this].concat(o)))).onChange=function(e){(0,t.props.onChange)(e.target.innerHTML)},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&fn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderEmojiModal\",value:function(){var n=this,e=this.props.config,t=e.popupClassName,o=e.emojis;return S.a.createElement(\"div\",{className:L()(\"rdw-emoji-modal\",t),onClick:d},o.map(function(e,t){return S.a.createElement(\"span\",{key:t,className:\"rdw-emoji-icon\",alt:\"\",onClick:n.onChange},e)}))}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-emoji-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-emoji-control\",\"aria-expanded\":i,title:r||c[\"components.controls.emoji.emoji\"]},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderEmojiModal():void 0)}}])&&pn(e.prototype,t),n&&pn(e,n),i}();gn.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object};var yn=gn;function hn(e){return(hn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Mn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function bn(e,t){return!t||\"object\"!==hn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function jn(e){return(jn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Nn(e,t){return(Nn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Sn=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=bn(this,(e=jn(r)).call.apply(e,[this].concat(n)))).state={expanded:!1},i.onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.addEmoji=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),e,n.getCurrentInlineStyle());o(E.EditorState.push(n,r,\"insert-characters\")),i.doCollapse()},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Nn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||yn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addEmoji,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onCollpase:this.closeModal})}}])&&Mn(e.prototype,t),n&&Mn(e,n),r}();Sn.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};function En(){return S.a.createElement(\"div\",{className:\"rdw-spinner\"},S.a.createElement(\"div\",{className:\"rdw-bounce1\"}),S.a.createElement(\"div\",{className:\"rdw-bounce2\"}),S.a.createElement(\"div\",{className:\"rdw-bounce3\"}))}n(29),n(30);function Cn(e){return(Cn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Ln(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function kn(e,t){return!t||\"object\"!==Cn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Dn(e){return(Dn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function vn(e,t){return(vn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var wn=function(){function r(){var e,c;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(c=kn(this,(e=Dn(r)).call.apply(e,[this].concat(n)))).state={imgSrc:\"\",dragEnter:!1,uploadHighlighted:c.props.config.uploadEnabled&&!!c.props.config.uploadCallback,showImageLoading:!1,height:c.props.config.defaultSize.height,width:c.props.config.defaultSize.width,alt:\"\"},c.onDragEnter=function(e){c.stopPropagation(e),c.setState({dragEnter:!0})},c.onImageDrop=function(e){var t,n;e.preventDefault(),e.stopPropagation(),c.setState({dragEnter:!1}),n=e.dataTransfer.items?(t=e.dataTransfer.items,!0):(t=e.dataTransfer.files,!1);for(var o=0;o<t.length;o+=1)if((!n||\"file\"===t[o].kind)&&t[o].type.match(\"^image/\")){var r=n?t[o].getAsFile():t[o];c.uploadImage(r)}},c.showImageUploadOption=function(){c.setState({uploadHighlighted:!0})},c.addImageFromState=function(){var e=c.state,t=e.imgSrc,n=e.alt,o=c.state,r=o.height,i=o.width,a=c.props.onChange;isNaN(r)||(r+=\"px\"),isNaN(i)||(i+=\"px\"),a(t,r,i,n)},c.showImageURLOption=function(){c.setState({uploadHighlighted:!1})},c.toggleShowImageLoading=function(){var e=!c.state.showImageLoading;c.setState({showImageLoading:e})},c.updateValue=function(e){var t,n,o;c.setState((t={},n=\"\".concat(e.target.name),o=e.target.value,n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t))},c.selectImage=function(e){e.target.files&&0<e.target.files.length&&c.uploadImage(e.target.files[0])},c.uploadImage=function(e){c.toggleShowImageLoading(),(0,c.props.config.uploadCallback)(e).then(function(e){var t=e.data;c.setState({showImageLoading:!1,dragEnter:!1,imgSrc:t.link||t.url}),c.fileUpload=!1}).catch(function(){c.setState({showImageLoading:!1,dragEnter:!1})})},c.fileUploadClick=function(e){c.fileUpload=!0,e.stopPropagation()},c.stopPropagation=function(e){c.fileUpload?c.fileUpload=!1:(e.preventDefault(),e.stopPropagation())},c}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&vn(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.config;e.expanded&&!this.props.expanded?this.setState({imgSrc:\"\",dragEnter:!1,uploadHighlighted:t.uploadEnabled&&!!t.uploadCallback,showImageLoading:!1,height:t.defaultSize.height,width:t.defaultSize.width,alt:\"\"}):t.uploadCallback===e.config.uploadCallback&&t.uploadEnabled===e.config.uploadEnabled||this.setState({uploadHighlighted:t.uploadEnabled&&!!t.uploadCallback})}},{key:\"renderAddImageModal\",value:function(){var e=this.state,t=e.imgSrc,n=e.uploadHighlighted,o=e.showImageLoading,r=e.dragEnter,i=e.height,a=e.width,c=e.alt,l=this.props,s=l.config,u=s.popupClassName,p=s.uploadCallback,d=s.uploadEnabled,m=s.urlEnabled,f=s.previewImage,g=s.inputAccept,y=s.alt,h=l.doCollapse,M=l.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-image-modal\",u),onClick:this.stopPropagation},S.a.createElement(\"div\",{className:\"rdw-image-modal-header\"},d&&p&&S.a.createElement(\"span\",{onClick:this.showImageUploadOption,className:\"rdw-image-modal-header-option\"},M[\"components.controls.image.fileUpload\"],S.a.createElement(\"span\",{className:L()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":n})})),m&&S.a.createElement(\"span\",{onClick:this.showImageURLOption,className:\"rdw-image-modal-header-option\"},M[\"components.controls.image.byURL\"],S.a.createElement(\"span\",{className:L()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":!n})}))),n?S.a.createElement(\"div\",{onClick:this.fileUploadClick},S.a.createElement(\"div\",{onDragEnter:this.onDragEnter,onDragOver:this.stopPropagation,onDrop:this.onImageDrop,className:L()(\"rdw-image-modal-upload-option\",{\"rdw-image-modal-upload-option-highlighted\":r})},S.a.createElement(\"label\",{htmlFor:\"file\",className:\"rdw-image-modal-upload-option-label\"},f&&t?S.a.createElement(\"img\",{src:t,alt:t,className:\"rdw-image-modal-upload-option-image-preview\"}):t||M[\"components.controls.image.dropFileText\"])),S.a.createElement(\"input\",{type:\"file\",id:\"file\",accept:g,onChange:this.selectImage,className:\"rdw-image-modal-upload-option-input\"})):S.a.createElement(\"div\",{className:\"rdw-image-modal-url-section\"},S.a.createElement(\"input\",{className:\"rdw-image-modal-url-input\",placeholder:M[\"components.controls.image.enterlink\"],name:\"imgSrc\",onChange:this.updateValue,onBlur:this.updateValue,value:t}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),y.present&&S.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},S.a.createElement(\"span\",{className:\"rdw-image-modal-alt-lbl\"},\"Alt Text\"),S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:c,name:\"alt\",className:\"rdw-image-modal-alt-input\",placeholder:\"alt\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},y.mandatory&&\"*\")),S.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},\"↕ \",S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:i,name:\"height\",className:\"rdw-image-modal-size-input\",placeholder:\"Height\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\"),\" ↔ \",S.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:a,name:\"width\",className:\"rdw-image-modal-size-input\",placeholder:\"Width\"}),S.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),S.a.createElement(\"span\",{className:\"rdw-image-modal-btn-section\"},S.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:this.addImageFromState,disabled:!t||!i||!a||y.mandatory&&!c},M[\"generic.add\"]),S.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:h},M[\"generic.cancel\"])),o?S.a.createElement(\"div\",{className:\"rdw-image-modal-spinner\"},S.a.createElement(En,null)):void 0)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=t.icon,o=t.className,r=t.title,i=e.expanded,a=e.onExpandEvent,c=e.translations;return S.a.createElement(\"div\",{className:\"rdw-image-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-image-control\"},S.a.createElement(T,{className:L()(o),value:\"unordered-list-item\",onClick:a,title:r||c[\"components.controls.image.image\"]},S.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderAddImageModal():void 0)}}])&&Ln(e.prototype,t),n&&Ln(e,n),r}();wn.propTypes={expanded:f.a.bool,onExpandEvent:f.a.func,doCollapse:f.a.func,onChange:f.a.func,config:f.a.object,translations:f.a.object};var xn=wn;function In(e){return(In=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function On(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function An(e,t){return!t||\"object\"!==In(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Tn(e){return(Tn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function zn(e,t){return(zn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var _n=function(){function n(e){var s;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(s=An(this,Tn(n).call(this,e))).onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.addImage=function(e,t,n,o){var r=s.props,i=r.editorState,a=r.onChange,c={src:e,height:t,width:n};r.config.alt.present&&(c.alt=o);var l=i.getCurrentContent().createEntity(\"IMAGE\",\"MUTABLE\",c).getLastCreatedEntityKey();a(E.AtomicBlockUtils.insertAtomicBlock(i,l,\" \")),s.doCollapse()};var t=s.props.modalHandler;return s.state={expanded:!1},t.registerCallBack(s.expandCollapse),s}var e,t,o;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&zn(e,t)}(n,m[\"Component\"]),e=n,(t=[{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||xn;return S.a.createElement(r,{config:t,translations:n,onChange:this.addImage,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&On(e.prototype,t),o&&On(e,o),n}();_n.propTypes={editorState:f.a.object.isRequired,onChange:f.a.func.isRequired,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};function Pn(e){var t=e.config,n=e.onChange,o=e.translations,r=t.icon,i=t.className,a=t.title;return S.a.createElement(\"div\",{className:\"rdw-remove-wrapper\",\"aria-label\":\"rdw-remove-control\"},S.a.createElement(T,{className:L()(i),onClick:n,title:a||o[\"components.controls.remove.remove\"]},S.a.createElement(\"img\",{src:r,alt:\"\"})))}var Un=_n;n(31);Pn.propTypes={onChange:f.a.func,config:f.a.object,translations:f.a.object};var Yn=Pn;function Fn(e){return(Fn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Rn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Bn(e,t){return!t||\"object\"!==Fn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Qn(e){return(Qn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Hn(e,t){return(Hn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Zn=function(){function i(){var e,n;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];return(n=Bn(this,(e=Qn(i)).call.apply(e,[this].concat(o)))).state={expanded:!1},n.onExpandEvent=function(){n.signalExpanded=!n.state.expanded},n.expandCollapse=function(){n.setState({expanded:n.signalExpanded}),n.signalExpanded=!1},n.removeInlineStyles=function(){var e=n.props,t=e.editorState;(0,e.onChange)(n.removeAllInlineStyles(t))},n.removeAllInlineStyles=function(n){var o=n.getCurrentContent();return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"MONOSPACE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(e){o=E.Modifier.removeInlineStyle(o,n.getSelection(),e)}),u(Object(C.getSelectionCustomInlineStyle)(n,[\"FONTSIZE\",\"FONTFAMILY\",\"COLOR\",\"BGCOLOR\"]),function(e,t){t&&(o=E.Modifier.removeInlineStyle(o,n.getSelection(),t))}),E.EditorState.push(n,o,\"change-inline-style\")},n.doExpand=function(){n.setState({expanded:!0})},n.doCollapse=function(){n.setState({expanded:!1})},n}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Hn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state.expanded,r=t.component||Yn;return S.a.createElement(r,{config:t,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.removeInlineStyles})}}])&&Rn(e.prototype,t),n&&Rn(e,n),i}();Zn.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object.isRequired,config:f.a.object,translations:f.a.object,modalHandler:f.a.object};n(32);function Wn(e){return(Wn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Gn(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Jn(e,t){return!t||\"object\"!==Wn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Vn(e){return(Vn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function qn(e,t){return(qn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Kn=function(){function i(){var e,t;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(t=Jn(this,(e=Vn(i)).call.apply(e,[this].concat(o)))).onChange=function(e){(0,t.props.onChange)(e)},t}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&qn(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"renderInDropDown\",value:function(){var e=this.props,t=e.config,n=e.expanded,o=e.doExpand,r=e.onExpandEvent,i=e.doCollapse,a=e.currentState,c=a.undoDisabled,l=a.redoDisabled,s=e.translations,u=t.options,p=t.undo,d=t.redo,m=t.className,f=t.dropdownClassName,g=t.title;return S.a.createElement(F,{className:L()(\"rdw-history-dropdown\",m),optionWrapperClassName:L()(f),expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-history-control\",title:g||s[\"components.controls.history.history\"]},S.a.createElement(\"img\",{src:h(t),alt:\"\"}),0<=u.indexOf(\"undo\")&&S.a.createElement(G,{value:\"undo\",onClick:this.onChange,disabled:c,className:L()(\"rdw-history-dropdownoption\",p.className),title:p.title||s[\"components.controls.history.undo\"]},S.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=u.indexOf(\"redo\")&&S.a.createElement(G,{value:\"redo\",onClick:this.onChange,disabled:l,className:L()(\"rdw-history-dropdownoption\",d.className),title:d.title||s[\"components.controls.history.redo\"]},S.a.createElement(\"img\",{src:d.icon,alt:\"\"})))}},{key:\"renderInFlatList\",value:function(){var e=this.props,t=e.config,n=t.options,o=t.undo,r=t.redo,i=t.className,a=e.currentState,c=a.undoDisabled,l=a.redoDisabled,s=e.translations;return S.a.createElement(\"div\",{className:L()(\"rdw-history-wrapper\",i),\"aria-label\":\"rdw-history-control\"},0<=n.indexOf(\"undo\")&&S.a.createElement(T,{value:\"undo\",onClick:this.onChange,className:L()(o.className),disabled:c,title:o.title||s[\"components.controls.history.undo\"]},S.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"redo\")&&S.a.createElement(T,{value:\"redo\",onClick:this.onChange,className:L()(r.className),disabled:l,title:r.title||s[\"components.controls.history.redo\"]},S.a.createElement(\"img\",{src:r.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&Gn(e.prototype,t),n&&Gn(e,n),i}();function Xn(e){return(Xn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function $n(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function eo(e,t){return!t||\"object\"!==Xn(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function to(e){return(to=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function no(e,t){return(no=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}Kn.propTypes={expanded:f.a.bool,doExpand:f.a.func,doCollapse:f.a.func,onExpandEvent:f.a.func,config:f.a.object,onChange:f.a.func,currentState:f.a.object,translations:f.a.object};var oo=function(){function r(e){var i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=eo(this,to(r).call(this,e))).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(e){var t=i.props,n=t.editorState,o=t.onChange,r=E.EditorState[e](n);r&&o(r)},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})};var t={expanded:!(i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1}),undoDisabled:!1,redoDisabled:!1},n=e.editorState,o=e.modalHandler;return n&&(t.undoDisabled=0===n.getUndoStack().size,t.redoDisabled=0===n.getRedoStack().size),i.state=t,o.registerCallBack(i.expandCollapse),i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&no(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidUpdate\",value:function(e){var t=this.props.editorState;t&&e.editorState!==t&&this.setState({undoDisabled:0===t.getUndoStack().size,redoDisabled:0===t.getRedoStack().size})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var e=this.props,t=e.config,n=e.translations,o=this.state,r=o.undoDisabled,i=o.redoDisabled,a=o.expanded,c=t.component||Kn;return S.a.createElement(c,{config:t,translations:n,currentState:{undoDisabled:r,redoDisabled:i},expanded:a,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange})}}])&&$n(e.prototype,t),n&&$n(e,n),r}();oo.propTypes={onChange:f.a.func.isRequired,editorState:f.a.object,modalHandler:f.a.object,config:f.a.object,translations:f.a.object};var ro={inline:ie,blockType:be,fontSize:Ie,fontFamily:He,list:nt,textAlign:ft,colorPicker:vt,link:Jt,embedded:sn,emoji:Sn,image:Un,remove:Zn,history:oo};n(33);function io(e){return(io=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function ao(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function co(e,t){return!t||\"object\"!==io(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function lo(e){return(lo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function so(e,t){return(so=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function uo(e,t,n){e.findEntityRanges(function(e){var t=e.getEntity();return null!==t&&\"LINK\"===n.getEntity(t).getType()},t)}function po(e){var t,n,c=e.showOpenOptionOnHover;return n=t=function(){function i(){var e,r;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(r=co(this,(e=lo(i)).call.apply(e,[this].concat(n)))).state={showPopOver:!1},r.openLink=function(){var e=r.props,t=e.entityKey,n=e.contentState.getEntity(t).getData().url,o=window.open(n,\"blank\");o&&o.focus()},r.toggleShowPopOver=function(){var e=!r.state.showPopOver;r.setState({showPopOver:e})},r}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&so(e,t)}(i,m[\"Component\"]),e=i,(t=[{key:\"render\",value:function(){var e=this.props,t=e.children,n=e.entityKey,o=e.contentState.getEntity(n).getData(),r=o.url,i=o.targetOption,a=this.state.showPopOver;return S.a.createElement(\"span\",{className:\"rdw-link-decorator-wrapper\",onMouseEnter:this.toggleShowPopOver,onMouseLeave:this.toggleShowPopOver},S.a.createElement(\"a\",{href:r,target:i},t),a&&c?S.a.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuMDcyIDBIOC45MTVhLjkyNS45MjUgMCAwIDAgMCAxLjg0OWgyLjkyNUw2Ljk2MSA2LjcyN2EuOTE4LjkxOCAwIDAgMC0uMjcuNjU0YzAgLjI0Ny4wOTUuNDguMjcuNjU0YS45MTguOTE4IDAgMCAwIC42NTQuMjcuOTE4LjkxOCAwIDAgMCAuNjUzLS4yN2w0Ljg4LTQuODh2Mi45MjZhLjkyNS45MjUgMCAwIDAgMS44NDggMFYuOTI0QS45MjUuOTI1IDAgMCAwIDE0LjA3MiAweiIvPjxwYXRoIGQ9Ik0xMC42MjMgMTMuNDExSDEuNTg1VjQuMzcyaDYuNzk4bDEuNTg0LTEuNTg0SC43OTJBLjc5Mi43OTIgMCAwIDAgMCAzLjU4djEwLjYyNGMwIC40MzcuMzU1Ljc5Mi43OTIuNzkyaDEwLjYyNGEuNzkyLjc5MiAwIDAgMCAuNzkyLS43OTJWNS4wMjlsLTEuNTg1IDEuNTg0djYuNzk4eiIvPjwvZz48L3N2Zz4=\",alt:\"\",onClick:this.openLink,className:\"rdw-link-decorator-icon\"}):void 0)}}])&&ao(e.prototype,t),n&&ao(e,n),i}(),t.propTypes={entityKey:f.a.string.isRequired,children:f.a.array,contentState:f.a.object},n}n(34);function mo(e){var t=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,mo),this.getMentionComponent=function(){function e(e){var t=e.entityKey,n=e.children,o=e.contentState.getEntity(t).getData(),r=o.url,i=o.value;return S.a.createElement(\"a\",{href:r||i,className:L()(\"rdw-mention-link\",a)},n)}var a=t.className;return e.propTypes={entityKey:f.a.number,children:f.a.array,contentState:f.a.object},e},this.getMentionDecorator=function(){return{strategy:t.findMentionEntities,component:t.getMentionComponent()}},this.className=e}mo.prototype.findMentionEntities=function(e,t,n){e.findEntityRanges(function(e){var t=e.getEntity();return null!==t&&\"MENTION\"===n.getEntity(t).getType()},t)};var fo=mo;n(35);function go(e){return(go=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function yo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function ho(e,t){return!t||\"object\"!==go(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Mo(e){return(Mo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function bo(e,t){return(bo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function jo(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var No=function e(t){var p=this;jo(this,e),this.findSuggestionEntities=function(e,t){if(p.config.getEditorState()){var n=p.config,o=n.separator,r=n.trigger,i=n.getSuggestions,a=(0,n.getEditorState)().getSelection();if(a.get(\"anchorKey\")===e.get(\"key\")&&a.get(\"anchorKey\")===a.get(\"focusKey\")){var c=e.getText(),l=(c=c.substr(0,a.get(\"focusOffset\")===c.length-1?c.length:a.get(\"focusOffset\")+1)).lastIndexOf(o+r),s=o+r;if((void 0===l||l<0)&&c[0]===r&&(l=0,s=r),0<=l){var u=c.substr(l+s.length,c.length);i().some(function(e){return!!e.value&&(p.config.caseSensitive?0<=e.value.indexOf(u):0<=e.value.toLowerCase().indexOf(u&&u.toLowerCase()))})&&t(0===l?0:l+1,c.length)}}}},this.getSuggestionComponent=function(){var e,t,c=this.config;return t=e=function(){function r(){var e,a;jo(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(a=ho(this,(e=Mo(r)).call.apply(e,[this].concat(n)))).state={style:{left:15},activeOption:-1,showSuggestions:!0},a.onEditorKeyDown=function(e){var t=a.state.activeOption,n={};\"ArrowDown\"===e.key?(e.preventDefault(),t===a.filteredSuggestions.length-1?n.activeOption=0:n.activeOption=t+1):\"ArrowUp\"===e.key?n.activeOption=t<=0?a.filteredSuggestions.length-1:t-1:\"Escape\"===e.key?(n.showSuggestions=!1,y()):\"Enter\"===e.key&&a.addMention(),a.setState(n)},a.onOptionMouseEnter=function(e){var t=e.target.getAttribute(\"data-index\");a.setState({activeOption:t})},a.onOptionMouseLeave=function(){a.setState({activeOption:-1})},a.setSuggestionReference=function(e){a.suggestion=e},a.setDropdownReference=function(e){a.dropdown=e},a.closeSuggestionDropdown=function(){a.setState({showSuggestions:!1})},a.filteredSuggestions=[],a.filterSuggestions=function(e){var t=e.children[0].props.text.substr(1),n=c.getSuggestions();a.filteredSuggestions=n&&n.filter(function(e){return!t||0===t.length||(c.caseSensitive?0<=e.value.indexOf(t):0<=e.value.toLowerCase().indexOf(t&&t.toLowerCase()))})},a.addMention=function(){var e=a.state.activeOption,t=c.getEditorState(),n=c.onChange,o=c.separator,r=c.trigger,i=a.filteredSuggestions[e];i&&function(e,t,n,o,r){var i=r.value,a=r.url,c=e.getCurrentContent().createEntity(\"MENTION\",\"IMMUTABLE\",{text:\"\".concat(o).concat(i),value:i,url:a}).getLastCreatedEntityKey(),l=Object(C.getSelectedBlock)(e).getText(),s=e.getSelection().focusOffset,u=(l.lastIndexOf(n+o,s)||0)+1,p=!1;l.length===u+1&&(s=l.length),\" \"===l[s]&&(p=!0);var d=e.getSelection().merge({anchorOffset:u,focusOffset:s}),m=E.EditorState.acceptSelection(e,d),f=E.Modifier.replaceText(m.getCurrentContent(),d,\"\".concat(o).concat(i),m.getCurrentInlineStyle(),c);m=E.EditorState.push(m,f,\"insert-characters\"),p||(d=m.getSelection().merge({anchorOffset:u+i.length+o.length,focusOffset:u+i.length+o.length}),m=E.EditorState.acceptSelection(m,d),f=E.Modifier.insertText(m.getCurrentContent(),d,\" \",m.getCurrentInlineStyle(),void 0)),t(E.EditorState.push(m,f,\"insert-characters\"))}(t,n,o,r,i)},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&bo(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){var e,t,n,o=c.getWrapperRef().getBoundingClientRect(),r=this.suggestion.getBoundingClientRect(),i=this.dropdown.getBoundingClientRect();o.width<r.left-o.left+i.width?t=15:e=15,o.bottom<i.bottom&&(n=0),this.setState({style:{left:e,right:t,bottom:n}}),k.registerCallBack(this.onEditorKeyDown),g(),c.modalHandler.setSuggestionCallback(this.closeSuggestionDropdown),this.filterSuggestions(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.props.children!==e.children&&(this.filterSuggestions(e),this.setState({showSuggestions:!0}))}},{key:\"componentWillUnmount\",value:function(){k.deregisterCallBack(this.onEditorKeyDown),y(),c.modalHandler.removeSuggestionCallback()}},{key:\"render\",value:function(){var n=this,e=this.props.children,t=this.state,o=t.activeOption,r=t.showSuggestions,i=c.dropdownClassName,a=c.optionClassName;return S.a.createElement(\"span\",{className:\"rdw-suggestion-wrapper\",ref:this.setSuggestionReference,onClick:c.modalHandler.onSuggestionClick,\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-suggestion-popup\"},S.a.createElement(\"span\",null,e),r&&S.a.createElement(\"span\",{className:L()(\"rdw-suggestion-dropdown\",i),contentEditable:\"false\",suppressContentEditableWarning:!0,style:this.state.style,ref:this.setDropdownReference},this.filteredSuggestions.map(function(e,t){return S.a.createElement(\"span\",{key:t,spellCheck:!1,onClick:n.addMention,\"data-index\":t,onMouseEnter:n.onOptionMouseEnter,onMouseLeave:n.onOptionMouseLeave,className:L()(\"rdw-suggestion-option\",a,{\"rdw-suggestion-option-active\":t===o})},e.text)})))}}])&&yo(e.prototype,t),n&&yo(e,n),r}(),e.propTypes={children:f.a.array},t}.bind(this),this.getSuggestionDecorator=function(){return{strategy:p.findSuggestionEntities,component:p.getSuggestionComponent()}};var n=t.separator,o=t.trigger,r=t.getSuggestions,i=t.onChange,a=t.getEditorState,c=t.getWrapperRef,l=t.caseSensitive,s=t.dropdownClassName,u=t.optionClassName,d=t.modalHandler;this.config={separator:n,trigger:o,getSuggestions:r,onChange:i,getEditorState:a,getWrapperRef:c,caseSensitive:l,dropdownClassName:s,optionClassName:u,modalHandler:d}},So=function(e){return[new fo(e.mentionClassName).getMentionDecorator(),new No(e).getSuggestionDecorator()]};n(36);function Eo(e){var c=this;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,Eo),this.getHashtagComponent=function(){function e(e){var t=e.children,n=t[0].props.text;return S.a.createElement(\"a\",{href:n,className:L()(\"rdw-hashtag-link\",o)},t)}var o=c.className;return e.propTypes={children:f.a.object},e},this.findHashtagEntities=function(e,t){for(var n=e.getText(),o=0,r=0;0<n.length&&0<=o;)if(n[0]===c.hashCharacter?(r=o=0,n=n.substr(c.hashCharacter.length)):0<=(o=n.indexOf(c.separator+c.hashCharacter))&&(n=n.substr(o+(c.separator+c.hashCharacter).length),r+=o+c.separator.length),0<=o){var i=0<=n.indexOf(c.separator)?n.indexOf(c.separator):n.length,a=n.substr(0,i);a&&0<a.length&&(t(r,r+a.length+c.hashCharacter.length),r+=c.hashCharacter.length)}},this.getHashtagDecorator=function(){return{strategy:c.findHashtagEntities,component:c.getHashtagComponent()}},this.className=e.className,this.hashCharacter=e.hashCharacter||\"#\",this.separator=e.separator||\" \"}function Co(e){var t=e.block,n=e.contentState.getEntity(t.getEntityAt(0)).getData(),o=n.src,r=n.height,i=n.width;return S.a.createElement(\"iframe\",{height:r,width:i,src:o,frameBorder:\"0\",allowFullScreen:!0,title:\"Wysiwyg Embedded Content\"})}var Lo=function(e){return new Eo(e).getHashtagDecorator()};Co.propTypes={block:f.a.object,contentState:f.a.object};var ko=Co;n(37);function Do(e){return(Do=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function vo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function wo(e,t){return!t||\"object\"!==Do(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function xo(e){return(xo=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Io(e,t){return(Io=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Oo=function(d){var e,t;return t=e=function(){function r(){var e,i;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(i=wo(this,(e=xo(r)).call.apply(e,[this].concat(n)))).state={hovered:!1},i.setEntityAlignmentLeft=function(){i.setEntityAlignment(\"left\")},i.setEntityAlignmentRight=function(){i.setEntityAlignment(\"right\")},i.setEntityAlignmentCenter=function(){i.setEntityAlignment(\"none\")},i.setEntityAlignment=function(e){var t=i.props,n=t.block,o=t.contentState,r=n.getEntityAt(0);o.mergeEntityData(r,{alignment:e}),d.onChange(E.EditorState.push(d.getEditorState(),o,\"change-block-data\")),i.setState({dummy:!0})},i.toggleHovered=function(){var e=!i.state.hovered;i.setState({hovered:e})},i}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Io(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"renderAlignmentOptions\",value:function(e){return S.a.createElement(\"div\",{className:L()(\"rdw-image-alignment-options-popup\",{\"rdw-image-alignment-options-popup-right\":\"right\"===e})},S.a.createElement(T,{onClick:this.setEntityAlignmentLeft,className:\"rdw-image-alignment-option\"},\"L\"),S.a.createElement(T,{onClick:this.setEntityAlignmentCenter,className:\"rdw-image-alignment-option\"},\"C\"),S.a.createElement(T,{onClick:this.setEntityAlignmentRight,className:\"rdw-image-alignment-option\"},\"R\"))}},{key:\"render\",value:function(){var e=this.props,t=e.block,n=e.contentState,o=this.state.hovered,r=d.isReadOnly,i=d.isImageAlignmentEnabled,a=n.getEntity(t.getEntityAt(0)).getData(),c=a.src,l=a.alignment,s=a.height,u=a.width,p=a.alt;return S.a.createElement(\"span\",{onMouseEnter:this.toggleHovered,onMouseLeave:this.toggleHovered,className:L()(\"rdw-image-alignment\",{\"rdw-image-left\":\"left\"===l,\"rdw-image-right\":\"right\"===l,\"rdw-image-center\":!l||\"none\"===l})},S.a.createElement(\"span\",{className:\"rdw-image-imagewrapper\"},S.a.createElement(\"img\",{src:c,alt:p,style:{height:s,width:u}}),!r()&&o&&i()?this.renderAlignmentOptions(l):void 0))}}])&&vo(e.prototype,t),n&&vo(e,n),r}(),e.propTypes={block:f.a.object,contentState:f.a.object},t},Ao=function(o,r){return function(e){if(\"function\"==typeof r){var t=r(e,o,o.getEditorState);if(t)return t}if(\"atomic\"===e.getType()){var n=o.getEditorState().getCurrentContent().getEntity(e.getEntityAt(0));if(n&&\"IMAGE\"===n.type)return{component:Oo(o),editable:!1};if(n&&\"EMBEDDED_LINK\"===n.type)return{component:ko,editable:!1}}}},To={options:[\"inline\",\"blockType\",\"fontSize\",\"fontFamily\",\"list\",\"textAlign\",\"colorPicker\",\"link\",\"embedded\",\"emoji\",\"image\",\"remove\",\"history\"],inline:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"bold\",\"italic\",\"underline\",\"strikethrough\",\"monospace\",\"superscript\",\"subscript\"],bold:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuMjM2IDBjMS42NTIgMCAyLjk0LjI5OCAzLjg2Ni44OTMuOTI1LjU5NSAxLjM4OCAxLjQ4NSAxLjM4OCAyLjY2OSAwIC42MDEtLjE3MyAxLjEzOS0uNTE2IDEuNjEtLjM0My40NzQtLjg0NC44My0xLjQ5OSAxLjA2OC44NDMuMTY3IDEuNDc0LjUyMyAxLjg5NSAxLjA3MS40MTkuNTUuNjMgMS4xODMuNjMgMS45MDMgMCAxLjI0NS0uNDQ0IDIuMTg3LTEuMzMgMi44MjUtLjg4Ni42NDEtMi4xNDQuOTYxLTMuNzY5Ljk2MUgwdi0yLjE2N2gxLjQ5NFYyLjE2N0gwVjBoNi4yMzZ6TTQuMzA4IDUuNDQ2aDIuMDI0Yy43NTIgMCAxLjMzLS4xNDMgMS43MzQtLjQzLjQwNS0uMjg1LjYwOC0uNzAxLjYwOC0xLjI1IDAtLjYtLjIwNC0xLjA0NC0uNjEyLTEuMzMtLjQwOC0uMjg2LTEuMDE2LS40MjctMS44MjYtLjQyN0g0LjMwOHYzLjQzN3ptMCAxLjgwNFYxMWgyLjU5M2MuNzQ3IDAgMS4zMTQtLjE1MiAxLjcwNy0uNDUyLjM5LS4zLjU4OC0uNzQ1LjU4OC0xLjMzNCAwLS42MzYtLjE2OC0xLjEyNC0uNS0xLjQ2LS4zMzYtLjMzNS0uODY0LS41MDQtMS41ODItLjUwNEg0LjMwOHoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},italic:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTcgM1YyaDR2MUg5Ljc1M2wtMyAxMEg4djFINHYtMWgxLjI0N2wzLTEwSDd6Ii8+PC9zdmc+\",className:void 0,title:void 0},underline:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTYuMDQ1IDJ2Ljk5Mkw0Ljc4NSAzdjUuMTcyYzAgLjg1OS4yNDMgMS41MTIuNzI3IDEuOTU3czEuMTI0LjY2OCAxLjkxOC42NjhjLjgzNiAwIDEuNTA5LS4yMjEgMi4wMTktLjY2NC41MTEtLjQ0Mi43NjYtMS4wOTYuNzY2LTEuOTYxVjNsLTEuMjYtLjAwOFYySDEzdi45OTJMMTEuNzM5IDN2NS4xNzJjMCAxLjIzNC0uMzk4IDIuMTgxLTEuMTk1IDIuODQtLjc5Ny42NTktMS44MzUuOTg4LTMuMTE0Ljk4OC0xLjI0MiAwLTIuMjQ4LS4zMjktMy4wMTctLjk4OC0uNzY5LS42NTktMS4xNTItMS42MDUtMS4xNTItMi44NFYzTDIgMi45OTJWMmg0LjA0NXpNMiAxM2gxMXYxSDJ6Ii8+PC9zdmc+\",className:void 0,title:void 0},strikethrough:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4wNCA1Ljk1NGg2LjIxNWE3LjQxMiA3LjQxMiAwIDAgMC0uNzk1LS40MzggMTEuOTA3IDExLjkwNyAwIDAgMC0xLjQ0Ny0uNTU3Yy0xLjE4OC0uMzQ4LTEuOTY2LS43MTEtMi4zMzQtMS4wODgtLjM2OC0uMzc3LS41NTItLjc3LS41NTItMS4xODEgMC0uNDk1LjE4Ny0uOTA2LjU2LTEuMjMyLjM4LS4zMzEuODg3LS40OTcgMS41MjMtLjQ5Ny42OCAwIDEuMjY2LjI1NSAxLjc1Ny43NjcuMjk1LjMxNS41ODIuODkxLjg2MSAxLjczbC4xMTcuMDE2LjcwMy4wNS4xLS4wMjRjLjAyOC0uMTUyLjA0Mi0uMjc5LjA0Mi0uMzggMC0uMzM3LS4wMzktLjg1Mi0uMTE3LTEuNTQ0YTkuMzc0IDkuMzc0IDAgMCAwLS4xNzYtLjk5NUM5Ljg4LjM3OSA5LjM4NS4yNDQgOS4wMTcuMTc2IDguMzY1LjA3IDcuODk5LjAxNiA3LjYyLjAxNmMtMS40NSAwLTIuNTQ1LjM1Ny0zLjI4NyAxLjA3MS0uNzQ3LjcyLTEuMTIgMS41ODktMS4xMiAyLjYwNyAwIC41MTEuMTMzIDEuMDQuNCAxLjU4Ni4xMjkuMjUzLjI3LjQ3OC40MjcuNjc0ek04LjI4IDguMTE0Yy41NzUuMjM2Ljk1Ny40MzYgMS4xNDcuNTk5LjQ1MS40MS42NzcuODUyLjY3NyAxLjMyNCAwIC4zODMtLjEzLjc0NS0uMzkzIDEuMDg4LS4yNS4zMzgtLjU5LjU4LTEuMDIuNzI2YTMuNDE2IDMuNDE2IDAgMCAxLTEuMTYzLjIyOGMtLjQwNyAwLS43NzUtLjA2Mi0xLjEwNC0uMTg2YTIuNjk2IDIuNjk2IDAgMCAxLS44NzgtLjQ4IDMuMTMzIDMuMTMzIDAgMCAxLS42Ny0uNzk0IDEuNTI3IDEuNTI3IDAgMCAxLS4xMDQtLjIyNyA1Ny41MjMgNTcuNTIzIDAgMCAwLS4xODgtLjQ3MyAyMS4zNzEgMjEuMzcxIDAgMCAwLS4yNTEtLjU5OWwtLjg1My4wMTd2LjM3MWwtLjAxNy4zMTNhOS45MiA5LjkyIDAgMCAwIDAgLjU3M2MuMDExLjI3LjAxNy43MDkuMDE3IDEuMzE2di4xMWMwIC4wNzkuMDIyLjE0LjA2Ny4xODUuMDgzLjA2OC4yODQuMTQ3LjYwMi4yMzdsMS4xNy4zMzdjLjQ1Mi4xMy45OTYuMTk0IDEuNjMyLjE5NC42ODYgMCAxLjI1Mi0uMDU5IDEuNjk4LS4xNzdhNC42OTQgNC42OTQgMCAwIDAgMS4yOC0uNTU3Yy40MDEtLjI1OS43MDUtLjQ4Ni45MTEtLjY4My4yNjgtLjI3Ni40NjYtLjU2OC41OTQtLjg3OGE0Ljc0IDQuNzQgMCAwIDAgLjM0My0xLjc4OGMwLS4yOTgtLjAyLS41NTctLjA1OC0uNzc2SDguMjgxek0xNC45MTQgNi41N2EuMjYuMjYgMCAwIDAtLjE5My0uMDc2SC4yNjhhLjI2LjI2IDAgMCAwLS4xOTMuMDc2LjI2NC4yNjQgMCAwIDAtLjA3NS4xOTR2LjU0YzAgLjA3OS4wMjUuMTQzLjA3NS4xOTRhLjI2LjI2IDAgMCAwIC4xOTMuMDc2SDE0LjcyYS4yNi4yNiAwIDAgMCAuMTkzLS4wNzYuMjY0LjI2NCAwIDAgMCAuMDc1LS4xOTR2LS41NGEuMjY0LjI2NCAwIDAgMC0uMDc1LS4xOTR6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},monospace:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzQ0NCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS4wMjEgMi45MDZjLjE4NiAxLjIxOS4zNzIgMS41LjM3MiAyLjcxOUMxLjM5MyA2LjM3NSAwIDcuMDMxIDAgNy4wMzF2LjkzOHMxLjM5My42NTYgMS4zOTMgMS40MDZjMCAxLjIxOS0uMTg2IDEuNS0uMzcyIDIuNzE5Qy43NDMgMTQuMDYzIDEuNzY0IDE1IDIuNjkzIDE1aDEuOTV2LTEuODc1cy0xLjY3Mi4xODgtMS42NzItLjkzOGMwLS44NDMuMTg2LS44NDMuMzcyLTIuNzE4LjA5My0uODQ0LS40NjQtMS41LTEuMDIyLTEuOTY5LjU1OC0uNDY5IDEuMTE1LTEuMDMxIDEuMDIyLTEuODc1QzMuMDY0IDMuNzUgMi45NyAzLjc1IDIuOTcgMi45MDZjMC0xLjEyNSAxLjY3Mi0xLjAzMSAxLjY3Mi0xLjAzMVYwaC0xLjk1QzEuNjcgMCAuNzQzLjkzOCAxLjAyIDIuOTA2ek0xMS45NzkgMi45MDZjLS4xODYgMS4yMTktLjM3MiAxLjUtLjM3MiAyLjcxOSAwIC43NSAxLjM5MyAxLjQwNiAxLjM5MyAxLjQwNnYuOTM4cy0xLjM5My42NTYtMS4zOTMgMS40MDZjMCAxLjIxOS4xODYgMS41LjM3MiAyLjcxOS4yNzggMS45NjktLjc0MyAyLjkwNi0xLjY3MiAyLjkwNmgtMS45NXYtMS44NzVzMS42NzIuMTg4IDEuNjcyLS45MzhjMC0uODQzLS4xODYtLjg0My0uMzcyLTIuNzE4LS4wOTMtLjg0NC40NjQtMS41IDEuMDIyLTEuOTY5LS41NTgtLjQ2OS0xLjExNS0xLjAzMS0xLjAyMi0xLjg3NS4xODYtMS44NzUuMzcyLTEuODc1LjM3Mi0yLjcxOSAwLTEuMTI1LTEuNjcyLTEuMDMxLTEuNjcyLTEuMDMxVjBoMS45NWMxLjAyMiAwIDEuOTUuOTM4IDEuNjcyIDIuOTA2eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},superscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMzA1IDEwLjE2NUwxMS44NjUgMTVIOS4wNTdsLTMuMTkyLTMuNTM2TDIuNzQ2IDE1SDBsNC41MjMtNC44MzVMLjIxOCA1LjYwM2gyLjc3TDUuOTg2IDguOTEgOS4wMSA1LjYwM2gyLjY0OWwtNC4zNTQgNC41NjJ6bTYuMjM0LTMuMjY5bDEuODc5LTEuMzA2Yy42NC0uNDE2IDEuMDYyLS44MDEgMS4yNjQtMS4xNTcuMjAxLS4zNTYuMzAyLS43MzguMzAyLTEuMTQ4IDAtLjY2OS0uMjM3LTEuMjEtLjcxLTEuNjItLjQ3NC0uNDExLTEuMDk3LS42MTctMS44NjgtLjYxNy0uNzQ0IDAtMS4zNC4yMDgtMS43ODUuNjI0LS40NDcuNDE2LS42NyAxLjA0My0uNjcgMS44ODFoMS40MzZjMC0uNS4wOTQtLjg0Ni4yODEtMS4wMzguMTg4LS4xOTEuNDQ1LS4yODcuNzcyLS4yODdzLjU4NS4wOTcuNzc3LjI5MmMuMTkuMTk1LjI4Ni40MzcuMjg2LjcyNiAwIC4yOS0uMDg5LjU1LS4yNjYuNzg1cy0uNjcuNjI4LTEuNDc5IDEuMTg0Yy0uNjkxLjQ3Ny0xLjYyNy45MjctMS45MDggMS4zNWwuMDE0IDEuNTY5SDE3VjYuODk2aC0zLjQ2MXoiLz48L3N2Zz4=\",className:void 0,title:void 0},subscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTExLjg2NiAxMS42NDZIOS4wNkw1Ljg2NyA3Ljk0MmwtMy4xMjEgMy43MDRIMGw0LjUyNC01LjA2NEwuMjE4IDEuODA0aDIuNzdsMyAzLjQ2NCAzLjAyMy0zLjQ2NGgyLjY1TDcuMzA2IDYuNTgybDQuNTYgNS4wNjR6bTEuNzI1IDIuMDU4bDEuODI3LTEuMzY4Yy42NC0uNDM1IDEuMDYyLS44NCAxLjI2NC0xLjIxMi4yMDItLjM3Mi4zMDItLjc3My4zMDItMS4yMDIgMC0uNy0uMjM3LTEuMjY2LS43MS0xLjY5Ni0uNDc0LS40MzEtMS4wOTctLjY0Ni0xLjg2OS0uNjQ2LS43NDQgMC0xLjM0LjIxOC0xLjc4NS42NTMtLjQ0Ni40MzYtLjY3IDEuMDkyLS42NyAxLjk3aDEuNDM2YzAtLjUyNC4wOTQtLjg4Ni4yODEtMS4wODcuMTg4LS4yLjQ0NS0uMzAxLjc3Mi0uMzAxcy41ODYuMTAyLjc3Ny4zMDZjLjE5LjIwNC4yODYuNDU4LjI4Ni43NiAwIC4zMDMtLjA4OC41NzctLjI2Ni44MjItLjE3Ny4yNDUtLjY3LjY1OC0xLjQ3OCAxLjI0LS42OTIuNS0xLjYyOC45NzEtMS45MSAxLjQxM0wxMS44NjQgMTVIMTd2LTEuMjk2aC0zLjQxeiIvPjwvc3ZnPg==\",className:void 0,title:void 0}},blockType:{inDropdown:!0,options:[\"Normal\",\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Blockquote\",\"Code\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontSize:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuOTIxIDMuMTE5YS40MjcuNDI3IDAgMCAwIC4zMzUuMTY0aC45N2EuNDI2LjQyNiAwIDAgMCAuMzA0LS4xMy40NDEuNDQxIDAgMCAwIC4xMjUtLjMxbC4wMDItMi40MWEuNDM0LjQzNCAwIDAgMC0uNDMtLjQzMkguNDNBLjQzNC40MzQgMCAwIDAgMCAuNDR2Mi40MDZjMCAuMjQyLjE5Mi40MzguNDMuNDM4aC45N2MuMTMgMCAuMjU0LS4wNi4zMzUtLjE2NWwuNzMtLjkzSDUuNTR2MTEuMzZjMCAuMjQxLjE5Mi40MzcuNDMuNDM3aDEuNzE3Yy4yMzcgMCAuNDMtLjE5Ni40My0uNDM3VjIuMTg4aDMuMDdsLjczNC45MzF6TTEzLjg5OCAxMS4yNjNhLjQyNS40MjUgMCAwIDAtLjQ4Mi0uMTQ2bC0uNTQ3LjE5NFY5LjYxN2EuNDQyLjQ0MiAwIDAgMC0uMTI2LS4zMS40MjYuNDI2IDAgMCAwLS4zMDQtLjEyN2gtLjQyOWEuNDM0LjQzNCAwIDAgMC0uNDMuNDM3djEuNjk0bC0uNTQ3LS4xOTRhLjQyNS40MjUgMCAwIDAtLjQ4MS4xNDYuNDQ0LjQ0NCAwIDAgMC0uMDE2LjUxMmwxLjMzMiAyLjAxN2EuNDI3LjQyNyAwIDAgMCAuNzEzIDBsMS4zMzMtMi4wMTdhLjQ0NC40NDQgMCAwIDAtLjAxNi0uNTEyeiIvPjwvZz48L3N2Zz4=\",options:[8,9,10,11,12,14,16,18,24,30,36,48,60,72,96],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontFamily:{options:[\"Arial\",\"Georgia\",\"Impact\",\"Tahoma\",\"Times New Roman\",\"Verdana\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},list:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"unordered\",\"ordered\",\"indent\",\"outdent\"],unordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS43MiAzLjQyN2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3LjAxIDEuNzIuMDFDLjc3LjAwOCAwIC43NzUgMCAxLjcxNWMwIC45NC43NzQgMS43MTEgMS43MiAxLjcxMXptMC0yLjYyNWMuNTEgMCAuOTIyLjQxMi45MjIuOTE0YS45Mi45MiAwIDAgMS0xLjg0MiAwIC45Mi45MiAwIDAgMSAuOTItLjkxNHpNMS43MiA4LjcwM2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3IDUuMjg3IDEuNzIgNS4yODdDLjc3IDUuMjg3IDAgNi4wNTIgMCA2Ljk5NXMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjJjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAwIDEtMS44NDIgMGMwLS41MDUuNDE1LS45MTQuOTItLjkxNHpNMS43MiAxMy45ODJjLjk1MSAwIDEuNzIyLS43NjggMS43MjItMS43MDggMC0uOTQzLS43NzQtMS43MDgtMS43MjEtMS43MDgtLjk0NyAwLTEuNzIxLjc2OC0xLjcyMSAxLjcwOHMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjVjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAxIDEtMS44NDIgMCAuOTIuOTIgMCAwIDEgLjkyLS45MTR6TTUuNzQ0IDIuMTE1aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OS40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDcuMzk0aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOThINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OC40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDEyLjY3aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjQuNC40IDAgMCAwIC40MDIuMzk4eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},ordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4yMDIgMS40NjZoOC4xNWMuMzM4IDAgLjYxMi0uMzIyLjYxMi0uNzIgMC0uMzk3LS4yNzQtLjcyLS42MTItLjcyaC04LjE1Yy0uMzM4IDAtLjYxMS4zMjMtLjYxMS43MiAwIC4zOTguMjczLjcyLjYxLjcyek0xMi4zNTIgNS43ODNoLTguMTVjLS4zMzggMC0uNjExLjMyMi0uNjExLjcyIDAgLjM5Ny4yNzMuNzIuNjEuNzJoOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5OC0uMjc0LS43Mi0uNjEyLS43MnpNMTIuMzUyIDExLjU0aC04LjE1Yy0uMzM4IDAtLjYxMS4zMjItLjYxMS43MiAwIC4zOTYuMjczLjcxOS42MS43MTloOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5Ny0uMjc0LS43Mi0uNjEyLS43MnpNLjc2NyAxLjI0OXYxLjgwMmMwIC4xOTUuMTM2LjM0My4zMTUuMzQzLjE3NiAwIC4zMTUtLjE1LjMxNS0uMzQzVi4zNTZjMC0uMTktLjEzMy0uMzM5LS4zMDItLjMzOS0uMTQ4IDAtLjIyMy4xMTgtLjI0Ny4xNTZhLjIyOC4yMjggMCAwIDAtLjAwMy4wMDVMLjU3OS42MjFhLjQ3NC40NzQgMCAwIDAtLjA5OC4yNzNjMCAuMTk0LjEyOC4zNTEuMjg2LjM1NXpNLjM1MiA4LjE5SDEuNTVjLjE1NyAwIC4yODUtLjE2Mi4yODUtLjM2MiAwLS4xOTgtLjEyOC0uMzU5LS4yODUtLjM1OUguNjh2LS4wMDZjMC0uMTA3LjIxLS4yODEuMzc4LS40MjIuMzM2LS4yNzguNzUzLS42MjUuNzUzLTEuMjI2IDAtLjU3LS4zNzYtMS0uODc0LTEtLjQ3NyAwLS44MzYuMzg1LS44MzYuODk3IDAgLjI5Ny4xNjQuNDAyLjMwNS40MDIuMiAwIC4zMjEtLjE3Ni4zMjEtLjM0NiAwLS4xMDYuMDIzLS4yMjguMjA0LS4yMjguMjQzIDAgLjI1LjI1NC4yNS4yODMgMCAuMjI4LS4yNTIuNDQyLS40OTUuNjQ5LS4zMDEuMjU1LS42NDIuNTQ0LS42NDIuOTkydi4zODRjMCAuMjA1LjE1OS4zNDMuMzA4LjM0M3pNMS43NyAxMC41NDNjMC0uNTkyLS4yOTYtLjkzMS0uODE0LS45MzEtLjY4IDAtLjg1OS41Ny0uODU5Ljg3MiAwIC4zNTEuMjIyLjM5LjMxOC4zOS4xODUgMCAuMzEtLjE0OC4zMS0uMzY2IDAtLjA4NC4wMjYtLjE4MS4yMjQtLjE4MS4xNDIgMCAuMi4wMjQuMi4yNjcgMCAuMjM3LS4wNDMuMjYzLS4yMTMuMjYzLS4xNjQgMC0uMjg4LjE1Mi0uMjg4LjM1NCAwIC4yLjEyNS4zNS4yOTEuMzUuMjI1IDAgLjI3LjEwOC4yNy4yODN2LjA3NWMwIC4yOTQtLjA5Ny4zNS0uMjc3LjM1LS4yNDggMC0uMjY3LS4xNS0uMjY3LS4xOTcgMC0uMTc0LS4wOTgtLjM1LS4zMTctLjM1LS4xOTIgMC0uMzA3LjE0MS0uMzA3LjM3OCAwIC40My4zMTMuODg4Ljg5NS44ODguNTY0IDAgLjkwMS0uNC45MDEtMS4wN3YtLjA3NGMwLS4yNzQtLjA3NC0uNTAyLS4yMTQtLjY2Ni4wOTYtLjE2My4xNDgtLjM4LjE0OC0uNjM1eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},indent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS43MTYgMy4yMTFIMTd2MS4xOTdINS43MTZ6TTAgLjAyaDE3djEuMTk3SDB6TTAgMTIuNzgzaDE3djEuMTk3SDB6TTUuNzE2IDkuNTkzSDE3djEuMTk3SDUuNzE2ek01LjcxNiA2LjQwMkgxN3YxLjE5N0g1LjcxNnpNLjE4NyA5LjQ5MUwyLjUyIDcgLjE4NyA0LjUwOXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},outdent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS4zOTYgMy4xOTNoMTAuNTczVjQuMzlINS4zOTZ6TS4wMzkuMDAzaDE1LjkzVjEuMkguMDM5ek0uMDM5IDEyLjc2NmgxNS45M3YxLjE5N0guMDM5ek01LjM5NiA5LjU3NWgxMC41NzN2MS4xOTdINS4zOTZ6TTUuMzk2IDYuMzg0aDEwLjU3M3YxLjE5N0g1LjM5NnpNMi4xODcgNC40OTFMMCA2Ljk4M2wyLjE4NyAyLjQ5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},title:void 0},textAlign:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"left\",\"center\",\"right\",\"justify\"],left:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNOC40OTMgMTQuODg3SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4IDEwLjE2MkguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1M2gxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUzek04LjQ5MyA1LjQzNUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOC43MDlILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTJoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},center:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuNTU2IDE0Ljg4N0gzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTggMTAuMTYySC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUzaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6TTExLjU1NiA1LjQzNUgzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTguNzA5SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTJ6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},right:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjE4IDE0Ljg4N0g2LjQ1YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOCAxMC4xNjJILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTNoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1M3pNMTQuNjE4IDUuNDM1SDYuNDVhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4LjcwOUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1MmgxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyeiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},justify:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjIgMTQuODg4SC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgMTAuMTYySC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgNS40MzZILjMyNWEuMzI2LjMyNiAwIDAgMSAwLS42NTJIMTQuNjJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42Mi43MUguMzI1YS4zMjYuMzI2IDAgMCAxIDAtLjY1M0gxNC42MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},title:void 0},colorPicker:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNDA2LjU4NWExLjk5OCAxLjk5OCAwIDAgMC0yLjgyNSAwbC0uNTQuNTRhLjc0MS43NDEgMCAxIDAtMS4wNDggMS4wNDhsLjE3NS4xNzUtNS44MjYgNS44MjUtMi4wMjIgMi4wMjNhLjkxLjkxIDAgMCAwLS4yNjYuNjAybC0uMDA1LjEwOHYuMDAybC0uMDgxIDEuODI5YS4zMDIuMzAyIDAgMCAwIC4zMDIuMzE2aC4wMTNsLjk3LS4wNDQuNTkyLS4wMjYuMjY4LS4wMTJjLjI5Ny0uMDEzLjU3OS0uMTM3Ljc5LS4zNDdsNy43Ny03Ljc3LjE0Ni4xNDRhLjc0Ljc0IDAgMCAwIDEuMDQ4IDBjLjI5LS4yOS4yOS0uNzU5IDAtMS4wNDhsLjU0LS41NGMuNzgtLjc4Ljc4LTIuMDQ0IDAtMi44MjV6TTguNzk1IDcuMzMzbC0yLjczLjUxNSA0LjQ1Mi00LjQ1MiAxLjEwOCAxLjEwNy0yLjgzIDIuODN6TTIuMDggMTMuNjczYy0xLjE0OCAwLTIuMDguMjk1LTIuMDguNjYgMCAuMzYzLjkzMi42NTggMi4wOC42NTggMS4xNSAwIDIuMDgtLjI5NCAyLjA4LS42NTkgMC0uMzY0LS45My0uNjU5LTIuMDgtLjY1OXoiLz48L2c+PC9zdmc+\",className:void 0,component:void 0,popupClassName:void 0,colors:[\"rgb(97,189,109)\",\"rgb(26,188,156)\",\"rgb(84,172,210)\",\"rgb(44,130,201)\",\"rgb(147,101,184)\",\"rgb(71,85,119)\",\"rgb(204,204,204)\",\"rgb(65,168,95)\",\"rgb(0,168,133)\",\"rgb(61,142,185)\",\"rgb(41,105,176)\",\"rgb(85,57,130)\",\"rgb(40,50,78)\",\"rgb(0,0,0)\",\"rgb(247,218,100)\",\"rgb(251,160,38)\",\"rgb(235,107,86)\",\"rgb(226,80,65)\",\"rgb(163,143,132)\",\"rgb(239,239,239)\",\"rgb(255,255,255)\",\"rgb(250,197,28)\",\"rgb(243,121,52)\",\"rgb(209,72,65)\",\"rgb(184,49,47)\",\"rgb(124,112,107)\",\"rgb(209,213,216)\"],title:void 0},link:{inDropdown:!1,className:void 0,component:void 0,popupClassName:void 0,dropdownClassName:void 0,showOpenOptionOnHover:!0,defaultTargetOption:\"_self\",options:[\"link\",\"unlink\"],link:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEzLjk2Ny45NUEzLjIyNiAzLjIyNiAwIDAgMCAxMS42Ny4wMDJjLS44NyAwLTEuNjg2LjMzNy0yLjI5Ny45NDhMNy4xMDUgMy4yMThBMy4yNDcgMy4yNDcgMCAwIDAgNi4yNCA2LjI0YTMuMjI1IDMuMjI1IDAgMCAwLTMuMDIyLjg2NUwuOTUgOS4zNzNhMy4yNTMgMy4yNTMgMCAwIDAgMCA0LjU5NCAzLjIyNiAzLjIyNiAwIDAgMCAyLjI5Ny45NDhjLjg3IDAgMS42ODYtLjMzNiAyLjI5OC0uOTQ4TDcuODEyIDExLjdhMy4yNDcgMy4yNDcgMCAwIDAgLjg2NS0zLjAyMyAzLjIyNSAzLjIyNSAwIDAgMCAzLjAyMi0uODY1bDIuMjY4LTIuMjY3YTMuMjUyIDMuMjUyIDAgMCAwIDAtNC41OTV6TTcuMTA1IDEwLjk5M0w0LjgzNyAxMy4yNmEyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NSAyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LS42NTUgMi4yNTIgMi4yNTIgMCAwIDEgMC0zLjE4bDIuMjY4LTIuMjY4YTIuMjMyIDIuMjMyIDAgMCAxIDEuNTktLjY1NWMuNDMgMCAuODQxLjEyIDEuMTk1LjM0M0w0Ljc3MiA5LjQzOGEuNS41IDAgMSAwIC43MDcuNzA3bDEuOTM5LTEuOTM4Yy41NDUuODY4LjQ0MiAyLjAzLS4zMTMgMi43ODV6bTYuMTU1LTYuMTU1bC0yLjI2OCAyLjI2N2EyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NWMtLjQzMSAwLS44NDEtLjEyLTEuMTk1LS4zNDNsMS45MzgtMS45MzhhLjUuNSAwIDEgMC0uNzA3LS43MDdMNy40OTkgNi43MWEyLjI1MiAyLjI1MiAwIDAgMSAuMzEzLTIuNzg1bDIuMjY3LTIuMjY4YTIuMjMzIDIuMjMzIDAgMCAxIDEuNTktLjY1NSAyLjIzMyAyLjIzMyAwIDAgMSAyLjI0NiAyLjI0NWMwIC42MDMtLjIzMiAxLjE2OC0uNjU1IDEuNTl6IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=\",className:void 0,title:void 0},unlink:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTMuOTU2IDEuMDM3YTMuNTUgMy41NSAwIDAgMC01LjAxNCAwTDYuNDM2IDMuNTQ0YS41NDUuNTQ1IDAgMSAwIC43Ny43N2wyLjUwOC0yLjUwNmEyLjQzOCAyLjQzOCAwIDAgMSAxLjczNS0uNzE1Yy42NTggMCAxLjI3NS4yNTQgMS43MzYuNzE1LjQ2LjQ2MS43MTUgMS4wNzguNzE1IDEuNzM2IDAgLjY1OC0uMjU0IDEuMjc0LS43MTUgMS43MzVMOS45MDcgOC41NThhMi40NTggMi40NTggMCAwIDEtMy40NzIgMCAuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3MSAzLjUzNCAzLjUzNCAwIDAgMCAyLjUwNyAxLjAzN2MuOTA4IDAgMS44MTYtLjM0NiAyLjUwNy0xLjAzN2wzLjI3OC0zLjI3OGEzLjUyIDMuNTIgMCAwIDAgMS4wMzUtMi41MDdjMC0uOTUtLjM2Ny0xLjg0LTEuMDM1LTIuNTA3eiIvPjxwYXRoIGQ9Ik03LjQgMTEuMDY1bC0yLjEyMiAyLjEyYTIuNDM3IDIuNDM3IDAgMCAxLTEuNzM1LjcxNiAyLjQzNyAyLjQzNyAwIDAgMS0xLjczNi0uNzE1IDIuNDU3IDIuNDU3IDAgMCAxIDAtMy40NzFsMy4wODYtMy4wODZhMi40MzggMi40MzggMCAwIDEgMS43MzUtLjcxNWMuNjU4IDAgMS4yNzUuMjU0IDEuNzM2LjcxNWEuNTQ1LjU0NSAwIDEgMCAuNzcxLS43NzEgMy41NSAzLjU1IDAgMCAwLTUuMDE0IDBMMS4wMzYgOC45NDRBMy41MiAzLjUyIDAgMCAwIDAgMTEuNDVjMCAuOTUuMzY3IDEuODQgMS4wMzUgMi41MDdhMy41MiAzLjUyIDAgMCAwIDIuNTA2IDEuMDM1Yy45NSAwIDEuODQtLjM2OCAyLjUwNy0xLjAzNWwyLjEyMi0yLjEyMWEuNTQ1LjU0NSAwIDAgMC0uNzcxLS43NzF6TTkuMjc0IDEyLjAwMmEuNTQ2LjU0NiAwIDAgMC0uNTQ2LjU0NXYxLjYzN2EuNTQ2LjU0NiAwIDAgMCAxLjA5MSAwdi0xLjYzN2EuNTQ1LjU0NSAwIDAgMC0uNTQ1LS41NDV6TTExLjIzIDExLjYxNmEuNTQ1LjU0NSAwIDEgMC0uNzcyLjc3MmwxLjE1NyAxLjE1NmEuNTQzLjU0MyAwIDAgMCAuNzcxIDAgLjU0NS41NDUgMCAwIDAgMC0uNzdsLTEuMTU2LTEuMTU4ek0xMi41MzcgOS44MkgxMC45YS41NDYuNTQ2IDAgMCAwIDAgMS4wOTFoMS42MzdhLjU0Ni41NDYgMCAwIDAgMC0xLjA5ek00LjkxIDMuNTQ3YS41NDYuNTQ2IDAgMCAwIC41NDUtLjU0NVYxLjM2NmEuNTQ2LjU0NiAwIDAgMC0xLjA5IDB2MS42MzZjMCAuMzAxLjI0NC41NDUuNTQ1LjU0NXpNMi44ODggMy45MzNhLjU0My41NDMgMCAwIDAgLjc3MSAwIC41NDUuNTQ1IDAgMCAwIDAtLjc3MUwyLjUwMiAyLjAwNWEuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3bDEuMTU3IDEuMTU4ek0xLjYyOCA1LjczaDEuNjM2YS41NDYuNTQ2IDAgMCAwIDAtMS4wOTJIMS42MjhhLjU0Ni41NDYgMCAwIDAgMCAxLjA5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},linkCallback:void 0},emoji:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjE1LjcyOSAyMi4wODIgMTcgMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI5LjcwOCAyNS4xMDRjLTMuMDIxLTMuMDIyLTcuOTM3LTMuMDIyLTEwLjk1OCAwLTMuMDIxIDMuMDItMy4wMiA3LjkzNiAwIDEwLjk1OCAzLjAyMSAzLjAyIDcuOTM3IDMuMDIgMTAuOTU4LS4wMDEgMy4wMi0zLjAyMSAzLjAyLTcuOTM2IDAtMTAuOTU3em0tLjg0NSAxMC4xMTJhNi41NiA2LjU2IDAgMCAxLTkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAtOS4yNjcgNi41NiA2LjU2IDAgMCAxIDkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAgOS4yNjd6bS03LjUyNC02LjczYS45MDYuOTA2IDAgMSAxIDEuODExIDAgLjkwNi45MDYgMCAwIDEtMS44MTEgMHptNC4xMDYgMGEuOTA2LjkwNiAwIDEgMSAxLjgxMiAwIC45MDYuOTA2IDAgMCAxLTEuODEyIDB6bTIuMTQxIDMuNzA4Yy0uNTYxIDEuMjk4LTEuODc1IDIuMTM3LTMuMzQ4IDIuMTM3LTEuNTA1IDAtMi44MjctLjg0My0zLjM2OS0yLjE0N2EuNDM4LjQzOCAwIDAgMSAuODEtLjMzNmMuNDA1Ljk3NiAxLjQxIDEuNjA3IDIuNTU5IDEuNjA3IDEuMTIzIDAgMi4xMjEtLjYzMSAyLjU0NC0xLjYwOGEuNDM4LjQzOCAwIDAgMSAuODA0LjM0N3oiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,emojis:[\"😀\",\"😁\",\"😂\",\"😃\",\"😉\",\"😋\",\"😎\",\"😍\",\"😗\",\"🤗\",\"🤔\",\"😣\",\"😫\",\"😴\",\"😌\",\"🤓\",\"😛\",\"😜\",\"😠\",\"😇\",\"😷\",\"😈\",\"👻\",\"😺\",\"😸\",\"😹\",\"😻\",\"😼\",\"😽\",\"🙀\",\"🙈\",\"🙉\",\"🙊\",\"👼\",\"👮\",\"🕵\",\"💂\",\"👳\",\"🎅\",\"👸\",\"👰\",\"👲\",\"🙍\",\"🙇\",\"🚶\",\"🏃\",\"💃\",\"⛷\",\"🏂\",\"🏌\",\"🏄\",\"🚣\",\"🏊\",\"⛹\",\"🏋\",\"🚴\",\"👫\",\"💪\",\"👈\",\"👉\",\"👆\",\"🖕\",\"👇\",\"🖖\",\"🤘\",\"🖐\",\"👌\",\"👍\",\"👎\",\"✊\",\"👊\",\"👏\",\"🙌\",\"🙏\",\"🐵\",\"🐶\",\"🐇\",\"🐥\",\"🐸\",\"🐌\",\"🐛\",\"🐜\",\"🐝\",\"🍉\",\"🍄\",\"🍔\",\"🍤\",\"🍨\",\"🍪\",\"🎂\",\"🍰\",\"🍾\",\"🍷\",\"🍸\",\"🍺\",\"🌍\",\"🚑\",\"⏰\",\"🌙\",\"🌝\",\"🌞\",\"⭐\",\"🌟\",\"🌠\",\"🌨\",\"🌩\",\"⛄\",\"🔥\",\"🎄\",\"🎈\",\"🎉\",\"🎊\",\"🎁\",\"🎗\",\"🏀\",\"🏈\",\"🎲\",\"🔇\",\"🔈\",\"📣\",\"🔔\",\"🎵\",\"🎷\",\"💰\",\"🖊\",\"📅\",\"✅\",\"❎\",\"💯\"],title:void 0},embedded:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNzA4IDYuNjE1YS40MzYuNDM2IDAgMCAwLS41NDMuMjkxbC0xLjgzIDYuMDQ1YS40MzYuNDM2IDAgMCAwIC44MzMuMjUyTDcgNy4xNmEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHpNOC45MzEgNi42MTVhLjQzNi40MzYgMCAwIDAtLjU0My4yOTFsLTEuODMgNi4wNDVhLjQzNi40MzYgMCAwIDAgLjgzNC4yNTJsMS44My02LjA0NGEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHoiLz48cGF0aCBkPSJNMTYuNTY0IDBILjQzNkEuNDM2LjQzNiAwIDAgMCAwIC40MzZ2MTYuMTI4YzAgLjI0LjE5NS40MzYuNDM2LjQzNmgxNi4xMjhjLjI0IDAgLjQzNi0uMTk1LjQzNi0uNDM2Vi40MzZBLjQzNi40MzYgMCAwIDAgMTYuNTY0IDB6TTMuNDg3Ljg3MmgxMC4wMjZ2MS43NDNIMy40ODdWLjg3MnptLTIuNjE1IDBoMS43NDN2MS43NDNILjg3MlYuODcyem0xNS4yNTYgMTUuMjU2SC44NzJWMy40ODhoMTUuMjU2djEyLjY0em0wLTEzLjUxM2gtMS43NDNWLjg3MmgxLjc0M3YxLjc0M3oiLz48Y2lyY2xlIGN4PSI5My44NjciIGN5PSIyNDUuMDY0IiByPSIxMy4xMjgiIHRyYW5zZm9ybT0ibWF0cml4KC4wMzMyIDAgMCAuMDMzMiAwIDApIi8+PGNpcmNsZSBjeD0iOTMuODY3IiBjeT0iMzYwLjU5MiIgcj0iMTMuMTI4IiB0cmFuc2Zvcm09Im1hdHJpeCguMDMzMiAwIDAgLjAzMzIgMCAwKSIvPjxwYXRoIGQ9Ik0xNC4yNTQgMTIuNjQxSDEwLjJhLjQzNi40MzYgMCAwIDAgMCAuODcyaDQuMDU0YS40MzYuNDM2IDAgMCAwIDAtLjg3MnoiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,embedCallback:void 0,defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},image:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNzQxIDBILjI2Qy4xMTYgMCAwIC4xMzYgMCAuMzA0djEzLjM5MmMwIC4xNjguMTE2LjMwNC4yNTkuMzA0SDE0Ljc0Yy4xNDMgMCAuMjU5LS4xMzYuMjU5LS4zMDRWLjMwNEMxNSAuMTM2IDE0Ljg4NCAwIDE0Ljc0MSAwem0tLjI1OCAxMy4zOTFILjUxN1YuNjFoMTMuOTY2VjEzLjM5eiIvPjxwYXRoIGQ9Ik00LjEzOCA2LjczOGMuNzk0IDAgMS40NC0uNzYgMS40NC0xLjY5NXMtLjY0Ni0xLjY5NS0xLjQ0LTEuNjk1Yy0uNzk0IDAtMS40NC43Ni0xLjQ0IDEuNjk1IDAgLjkzNC42NDYgMS42OTUgMS40NCAxLjY5NXptMC0yLjc4MWMuNTA5IDAgLjkyMy40ODcuOTIzIDEuMDg2IDAgLjU5OC0uNDE0IDEuMDg2LS45MjMgMS4wODYtLjUwOSAwLS45MjMtLjQ4Ny0uOTIzLTEuMDg2IDAtLjU5OS40MTQtMS4wODYuOTIzLTEuMDg2ek0xLjgxIDEyLjE3NGMuMDYgMCAuMTIyLS4wMjUuMTcxLS4wNzZMNi4yIDcuNzI4bDIuNjY0IDMuMTM0YS4yMzIuMjMyIDAgMCAwIC4zNjYgMCAuMzQzLjM0MyAwIDAgMCAwLS40M0w3Ljk4NyA4Ljk2OWwyLjM3NC0zLjA2IDIuOTEyIDMuMTQyYy4xMDYuMTEzLjI3LjEwNS4zNjYtLjAyYS4zNDMuMzQzIDAgMCAwLS4wMTYtLjQzbC0zLjEwNC0zLjM0N2EuMjQ0LjI0NCAwIDAgMC0uMTg2LS4wOC4yNDUuMjQ1IDAgMCAwLS4xOC4xTDcuNjIyIDguNTM3IDYuMzk0IDcuMDk0YS4yMzIuMjMyIDAgMCAwLS4zNTQtLjAxM2wtNC40IDQuNTZhLjM0My4zNDMgMCAwIDAtLjAyNC40My4yNDMuMjQzIDAgMCAwIC4xOTQuMTAzeiIvPjwvZz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,urlEnabled:!0,uploadEnabled:!0,previewImage:!1,alignmentEnabled:!0,uploadCallback:void 0,inputAccept:\"image/gif,image/jpeg,image/jpg,image/png,image/svg\",alt:{present:!1,mandatory:!1},defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},remove:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOC4xIDE0bDYuNC03LjJjLjYtLjcuNi0xLjgtLjEtMi41bC0yLjctMi43Yy0uMy0uNC0uOC0uNi0xLjMtLjZIOC42Yy0uNSAwLTEgLjItMS40LjZMLjUgOS4yYy0uNi43LS42IDEuOS4xIDIuNWwyLjcgMi43Yy4zLjQuOC42IDEuMy42SDE2di0xSDguMXptLTEuMy0uMXMwLS4xIDAgMGwtMi43LTIuN2MtLjQtLjQtLjQtLjkgMC0xLjNMNy41IDZoLTFsLTMgMy4zYy0uNi43LS42IDEuNy4xIDIuNEw1LjkgMTRINC42Yy0uMiAwLS40LS4xLS42LS4yTDEuMiAxMWMtLjMtLjMtLjMtLjggMC0xLjFMNC43IDZoMS44TDEwIDJoMUw3LjUgNmwzLjEgMy43LTMuNSA0Yy0uMS4xLS4yLjEtLjMuMnoiLz48L3N2Zz4=\",className:void 0,component:void 0,title:void 0},history:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"undo\",\"redo\"],undo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQuODc1YzIuNjcyIDAgNC44NDYtMi4xNDUgNC44NDYtNC43ODEgMC0yLjYzNy0yLjE3NC00Ljc4MS00Ljg0Ni00Ljc4MVY4LjVMMS42MTUgNC4yNSA3IDB2My4xODhjMy44NiAwIDcgMy4wOTggNyA2LjkwNlMxMC44NiAxNyA3IDE3cy03LTMuMDk4LTctNi45MDZoMi4xNTRjMCAyLjYzNiAyLjE3NCA0Ljc4MSA0Ljg0NiA0Ljc4MXoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},redo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNTA0IDEzLjk3N2E0LjQ5NyA0LjQ5NyAwIDAgMS00LjQ5Mi00LjQ5MiA0LjQ5NyA0LjQ5NyAwIDAgMSA0LjQ5Mi00LjQ5M3YyLjk5NWw0Ljk5LTMuOTkzTDYuNTA0IDB2Mi45OTVhNi40OTYgNi40OTYgMCAwIDAtNi40ODggNi40OWMwIDMuNTc4IDIuOTEgNi40OSA2LjQ4OCA2LjQ5YTYuNDk2IDYuNDk2IDAgMCAwIDYuNDg3LTYuNDloLTEuOTk2YTQuNDk3IDQuNDk3IDAgMCAxLTQuNDkxIDQuNDkyeiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+\",className:void 0,title:void 0},title:void 0}},zo={en:{\"generic.add\":\"Add\",\"generic.cancel\":\"Cancel\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Block Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Color Picker\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Highlight\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Embedded Link\",\"components.controls.embedded.enterlink\":\"Enter link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Font\",\"components.controls.fontsize.fontsize\":\"Font Size\",\"components.controls.history.history\":\"History\",\"components.controls.history.undo\":\"Undo\",\"components.controls.history.redo\":\"Redo\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"File Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop the file or click to upload\",\"components.controls.inline.bold\":\"Bold\",\"components.controls.inline.italic\":\"Italic\",\"components.controls.inline.underline\":\"Underline\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Link Title\",\"components.controls.link.linkTarget\":\"Link Target\",\"components.controls.link.linkTargetOption\":\"Open link in new window\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"List\",\"components.controls.list.unordered\":\"Unordered\",\"components.controls.list.ordered\":\"Ordered\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Remove\",\"components.controls.textalign.textalign\":\"Text Align\",\"components.controls.textalign.left\":\"Left\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Right\",\"components.controls.textalign.justify\":\"Justify\"},fr:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Annuler\",\"components.controls.blocktype.h1\":\"Titre 1\",\"components.controls.blocktype.h2\":\"Titre 2\",\"components.controls.blocktype.h3\":\"Titre 3\",\"components.controls.blocktype.h4\":\"Titre 4\",\"components.controls.blocktype.h5\":\"Titre 5\",\"components.controls.blocktype.h6\":\"Titre 6\",\"components.controls.blocktype.blockquote\":\"Citation\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Type bloc\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Palette de couleur\",\"components.controls.colorpicker.text\":\"Texte\",\"components.controls.colorpicker.background\":\"Fond\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Lien iFrame\",\"components.controls.embedded.enterlink\":\"Entrer le lien\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Police\",\"components.controls.fontsize.fontsize\":\"Taille de police\",\"components.controls.history.history\":\"Historique\",\"components.controls.history.undo\":\"Précédent\",\"components.controls.history.redo\":\"Suivant\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"Téléchargement\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Glisser une image ou cliquer pour télécharger\",\"components.controls.inline.bold\":\"Gras\",\"components.controls.inline.italic\":\"Italique\",\"components.controls.inline.underline\":\"Souligner\",\"components.controls.inline.strikethrough\":\"Barrer\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Exposant\",\"components.controls.inline.subscript\":\"Indice\",\"components.controls.link.linkTitle\":\"Titre du lien\",\"components.controls.link.linkTarget\":\"Cible du lien\",\"components.controls.link.linkTargetOption\":\"Ouvrir le lien dans une nouvelle fenêtre\",\"components.controls.link.link\":\"Lier\",\"components.controls.link.unlink\":\"Délier\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Désordonnée\",\"components.controls.list.ordered\":\"Ordonnée\",\"components.controls.list.indent\":\"Augmenter le retrait\",\"components.controls.list.outdent\":\"Diminuer le retrait\",\"components.controls.remove.remove\":\"Supprimer\",\"components.controls.textalign.textalign\":\"Alignement du texte\",\"components.controls.textalign.left\":\"Gauche\",\"components.controls.textalign.center\":\"Centre\",\"components.controls.textalign.right\":\"Droite\",\"components.controls.textalign.justify\":\"Justifier\"},zh:{\"generic.add\":\"添加\",\"generic.cancel\":\"取消\",\"components.controls.blocktype.h1\":\"标题1\",\"components.controls.blocktype.h2\":\"标题2\",\"components.controls.blocktype.h3\":\"标题3\",\"components.controls.blocktype.h4\":\"标题4\",\"components.controls.blocktype.h5\":\"标题5\",\"components.controls.blocktype.h6\":\"标题6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"源码\",\"components.controls.blocktype.blocktype\":\"样式\",\"components.controls.blocktype.normal\":\"正文\",\"components.controls.colorpicker.colorpicker\":\"选色器\",\"components.controls.colorpicker.text\":\"文字\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"内嵌\",\"components.controls.embedded.embeddedlink\":\"内嵌网页\",\"components.controls.embedded.enterlink\":\"输入网页地址\",\"components.controls.emoji.emoji\":\"表情符号\",\"components.controls.fontfamily.fontfamily\":\"字体\",\"components.controls.fontsize.fontsize\":\"字号\",\"components.controls.history.history\":\"历史\",\"components.controls.history.undo\":\"撤销\",\"components.controls.history.redo\":\"恢复\",\"components.controls.image.image\":\"图片\",\"components.controls.image.fileUpload\":\"来自文件\",\"components.controls.image.byURL\":\"在线图片\",\"components.controls.image.dropFileText\":\"点击或者拖拽文件上传\",\"components.controls.inline.bold\":\"粗体\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下划线\",\"components.controls.inline.strikethrough\":\"删除线\",\"components.controls.inline.monospace\":\"等宽字体\",\"components.controls.inline.superscript\":\"上标\",\"components.controls.inline.subscript\":\"下标\",\"components.controls.link.linkTitle\":\"超链接\",\"components.controls.link.linkTarget\":\"输入链接地址\",\"components.controls.link.linkTargetOption\":\"在新窗口中打开链接\",\"components.controls.link.link\":\"链接\",\"components.controls.link.unlink\":\"删除链接\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"项目符号\",\"components.controls.list.ordered\":\"编号\",\"components.controls.list.indent\":\"增加缩进量\",\"components.controls.list.outdent\":\"减少缩进量\",\"components.controls.remove.remove\":\"清除格式\",\"components.controls.textalign.textalign\":\"文本对齐\",\"components.controls.textalign.left\":\"文本左对齐\",\"components.controls.textalign.center\":\"居中\",\"components.controls.textalign.right\":\"文本右对齐\",\"components.controls.textalign.justify\":\"两端对齐\"},ru:{\"generic.add\":\"Добавить\",\"generic.cancel\":\"Отменить\",\"components.controls.blocktype.h1\":\"Заголовок 1\",\"components.controls.blocktype.h2\":\"Заголовок 2\",\"components.controls.blocktype.h3\":\"Заголовок 3\",\"components.controls.blocktype.h4\":\"Заголовок 4\",\"components.controls.blocktype.h5\":\"Заголовок 5\",\"components.controls.blocktype.h6\":\"Заголовок 6\",\"components.controls.blocktype.blockquote\":\"Цитата\",\"components.controls.blocktype.code\":\"Код\",\"components.controls.blocktype.blocktype\":\"Форматирование\",\"components.controls.blocktype.normal\":\"Обычный\",\"components.controls.colorpicker.colorpicker\":\"Выбор цвета\",\"components.controls.colorpicker.text\":\"Текст\",\"components.controls.colorpicker.background\":\"Фон\",\"components.controls.embedded.embedded\":\"Встраивание\",\"components.controls.embedded.embeddedlink\":\"Ссылка в iFrame\",\"components.controls.embedded.enterlink\":\"Вставьте ссылку\",\"components.controls.emoji.emoji\":\"Эмодзи\",\"components.controls.fontfamily.fontfamily\":\"Шрифт\",\"components.controls.fontsize.fontsize\":\"Размер шрифта\",\"components.controls.history.history\":\"История\",\"components.controls.history.undo\":\"Отменить\",\"components.controls.history.redo\":\"Вернуть\",\"components.controls.image.image\":\"Изображение\",\"components.controls.image.fileUpload\":\"Файлы\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Переместите в эту область файлы или кликните для загрузки\",\"components.controls.inline.bold\":\"Жирный\",\"components.controls.inline.italic\":\"Курсив\",\"components.controls.inline.underline\":\"Подчеркивание\",\"components.controls.inline.strikethrough\":\"Зачеркивание\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Верхний индекс\",\"components.controls.inline.subscript\":\"Нижний индекс\",\"components.controls.link.linkTitle\":\"Текст\",\"components.controls.link.linkTarget\":\"Адрес ссылки\",\"components.controls.link.linkTargetOption\":\"Открывать в новом окне\",\"components.controls.link.link\":\"Ссылка\",\"components.controls.link.unlink\":\"Убрать ссылку\",\"components.controls.list.list\":\"Список\",\"components.controls.list.unordered\":\"Неупорядоченный\",\"components.controls.list.ordered\":\"Упорядоченный\",\"components.controls.list.indent\":\"Отступ\",\"components.controls.list.outdent\":\"Выступ\",\"components.controls.remove.remove\":\"Удалить\",\"components.controls.textalign.textalign\":\"Выравнивание текста\",\"components.controls.textalign.left\":\"Слева\",\"components.controls.textalign.center\":\"По центру\",\"components.controls.textalign.right\":\"Справа\",\"components.controls.textalign.justify\":\"Выравнить\"},pt:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"Título 1\",\"components.controls.blocktype.h2\":\"Título 2\",\"components.controls.blocktype.h3\":\"Título 3\",\"components.controls.blocktype.h4\":\"Título 4\",\"components.controls.blocktype.h5\":\"Título 5\",\"components.controls.blocktype.h6\":\"Título 6\",\"components.controls.blocktype.blockquote\":\"Citação\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Estilo\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Paleta de cores\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Fundo\",\"components.controls.embedded.embedded\":\"Embarcado\",\"components.controls.embedded.embeddedlink\":\"Link embarcado\",\"components.controls.embedded.enterlink\":\"Coloque o link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonte\",\"components.controls.fontsize.fontsize\":\"Tamanho da Fonte\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Desfazer\",\"components.controls.history.redo\":\"Refazer\",\"components.controls.image.image\":\"Imagem\",\"components.controls.image.fileUpload\":\"Carregar arquivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arraste uma imagem aqui ou clique para carregar\",\"components.controls.inline.bold\":\"Negrito\",\"components.controls.inline.italic\":\"Itálico\",\"components.controls.inline.underline\":\"Sublinhado\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Sobrescrito\",\"components.controls.inline.subscript\":\"Subscrito\",\"components.controls.link.linkTitle\":\"Título do link\",\"components.controls.link.linkTarget\":\"Alvo do link\",\"components.controls.link.linkTargetOption\":\"Abrir link em outra janela\",\"components.controls.link.link\":\"Adicionar Link\",\"components.controls.link.unlink\":\"Remover link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Sem ordenção\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Aumentar recuo\",\"components.controls.list.outdent\":\"Diminuir recuo\",\"components.controls.remove.remove\":\"Remover\",\"components.controls.textalign.textalign\":\"Alinhamento do texto\",\"components.controls.textalign.left\":\"À Esquerda\",\"components.controls.textalign.center\":\"Centralizado\",\"components.controls.textalign.right\":\"À Direita\",\"components.controls.textalign.justify\":\"Justificado\"},ko:{\"generic.add\":\"입력\",\"generic.cancel\":\"취소\",\"components.controls.blocktype.h1\":\"제목1\",\"components.controls.blocktype.h2\":\"제목2\",\"components.controls.blocktype.h3\":\"제목3\",\"components.controls.blocktype.h4\":\"제목4\",\"components.controls.blocktype.h5\":\"제목5\",\"components.controls.blocktype.h6\":\"제목6\",\"components.controls.blocktype.blockquote\":\"인용\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"블록\",\"components.controls.blocktype.normal\":\"표준\",\"components.controls.colorpicker.colorpicker\":\"색상 선택\",\"components.controls.colorpicker.text\":\"글꼴색\",\"components.controls.colorpicker.background\":\"배경색\",\"components.controls.embedded.embedded\":\"임베드\",\"components.controls.embedded.embeddedlink\":\"임베드 링크\",\"components.controls.embedded.enterlink\":\"주소를 입력하세요\",\"components.controls.emoji.emoji\":\"이모지\",\"components.controls.fontfamily.fontfamily\":\"글꼴\",\"components.controls.fontsize.fontsize\":\"글꼴 크기\",\"components.controls.history.history\":\"히스토리\",\"components.controls.history.undo\":\"실행 취소\",\"components.controls.history.redo\":\"다시 실행\",\"components.controls.image.image\":\"이미지\",\"components.controls.image.fileUpload\":\"파일 업로드\",\"components.controls.image.byURL\":\"주소\",\"components.controls.image.dropFileText\":\"클릭하거나 파일을 드롭하여 업로드하세요\",\"components.controls.inline.bold\":\"굵게\",\"components.controls.inline.italic\":\"기울임꼴\",\"components.controls.inline.underline\":\"밑줄\",\"components.controls.inline.strikethrough\":\"취소선\",\"components.controls.inline.monospace\":\"고정 너비\",\"components.controls.inline.superscript\":\"위 첨자\",\"components.controls.inline.subscript\":\"아래 첨자\",\"components.controls.link.linkTitle\":\"링크 제목\",\"components.controls.link.linkTarget\":\"링크 타겟\",\"components.controls.link.linkTargetOption\":\"새창으로 열기\",\"components.controls.link.link\":\"링크\",\"components.controls.link.unlink\":\"링크 제거\",\"components.controls.list.list\":\"리스트\",\"components.controls.list.unordered\":\"일반 리스트\",\"components.controls.list.ordered\":\"순서 리스트\",\"components.controls.list.indent\":\"들여쓰기\",\"components.controls.list.outdent\":\"내어쓰기\",\"components.controls.remove.remove\":\"삭제\",\"components.controls.textalign.textalign\":\"텍스트 정렬\",\"components.controls.textalign.left\":\"왼쪽\",\"components.controls.textalign.center\":\"중앙\",\"components.controls.textalign.right\":\"오른쪽\",\"components.controls.textalign.justify\":\"양쪽\"},it:{\"generic.add\":\"Aggiungi\",\"generic.cancel\":\"Annulla\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Citazione\",\"components.controls.blocktype.code\":\"Codice\",\"components.controls.blocktype.blocktype\":\"Stili\",\"components.controls.blocktype.normal\":\"Normale\",\"components.controls.colorpicker.colorpicker\":\"Colore testo\",\"components.controls.colorpicker.text\":\"Testo\",\"components.controls.colorpicker.background\":\"Evidenziazione\",\"components.controls.embedded.embedded\":\"Incorpora\",\"components.controls.embedded.embeddedlink\":\"Incorpora link\",\"components.controls.embedded.enterlink\":\"Inserisci link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Carattere\",\"components.controls.fontsize.fontsize\":\"Dimensione carattere\",\"components.controls.history.history\":\"Modifiche\",\"components.controls.history.undo\":\"Annulla\",\"components.controls.history.redo\":\"Ripristina\",\"components.controls.image.image\":\"Immagine\",\"components.controls.image.fileUpload\":\"Carica immagine\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Trascina il file o clicca per caricare\",\"components.controls.inline.bold\":\"Grassetto\",\"components.controls.inline.italic\":\"Corsivo\",\"components.controls.inline.underline\":\"Sottolineato\",\"components.controls.inline.strikethrough\":\"Barrato\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Apice\",\"components.controls.inline.subscript\":\"Pedice\",\"components.controls.link.linkTitle\":\"Testo\",\"components.controls.link.linkTarget\":\"Link\",\"components.controls.link.linkTargetOption\":\"Apri link in una nuova finestra\",\"components.controls.link.link\":\"Inserisci link\",\"components.controls.link.unlink\":\"Rimuovi link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Elenco puntato\",\"components.controls.list.ordered\":\"Elenco numerato\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Rimuovi formattazione\",\"components.controls.textalign.textalign\":\"Allineamento del testo\",\"components.controls.textalign.left\":\"Allinea a sinistra\",\"components.controls.textalign.center\":\"Allinea al centro\",\"components.controls.textalign.right\":\"Allinea a destra\",\"components.controls.textalign.justify\":\"Giustifica\"},nl:{\"generic.add\":\"Toevoegen\",\"generic.cancel\":\"Annuleren\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Blocktype\",\"components.controls.blocktype.normal\":\"Normaal\",\"components.controls.colorpicker.colorpicker\":\"Kleurkiezer\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Achtergrond\",\"components.controls.embedded.embedded\":\"Ingevoegd\",\"components.controls.embedded.embeddedlink\":\"Ingevoegde link\",\"components.controls.embedded.enterlink\":\"Voeg link toe\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Lettertype\",\"components.controls.fontsize.fontsize\":\"Lettergrootte\",\"components.controls.history.history\":\"Geschiedenis\",\"components.controls.history.undo\":\"Ongedaan maken\",\"components.controls.history.redo\":\"Opnieuw\",\"components.controls.image.image\":\"Afbeelding\",\"components.controls.image.fileUpload\":\"Bestand uploaden\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop het bestand hier of klik om te uploaden\",\"components.controls.inline.bold\":\"Dikgedrukt\",\"components.controls.inline.italic\":\"Schuingedrukt\",\"components.controls.inline.underline\":\"Onderstrepen\",\"components.controls.inline.strikethrough\":\"Doorstrepen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Linktitel\",\"components.controls.link.linkTarget\":\"Link bestemming\",\"components.controls.link.linkTargetOption\":\"Open link in een nieuw venster\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"Lijst\",\"components.controls.list.unordered\":\"Ongeordend\",\"components.controls.list.ordered\":\"Geordend\",\"components.controls.list.indent\":\"Inspringen\",\"components.controls.list.outdent\":\"Inspringen verkleinen\",\"components.controls.remove.remove\":\"Verwijderen\",\"components.controls.textalign.textalign\":\"Tekst uitlijnen\",\"components.controls.textalign.left\":\"Links\",\"components.controls.textalign.center\":\"Gecentreerd\",\"components.controls.textalign.right\":\"Rechts\",\"components.controls.textalign.justify\":\"Uitgelijnd\"},de:{\"generic.add\":\"Hinzufügen\",\"generic.cancel\":\"Abbrechen\",\"components.controls.blocktype.h1\":\"Überschrift 1\",\"components.controls.blocktype.h2\":\"Überschrift 2\",\"components.controls.blocktype.h3\":\"Überschrift 3\",\"components.controls.blocktype.h4\":\"Überschrift 4\",\"components.controls.blocktype.h5\":\"Überschrift 5\",\"components.controls.blocktype.h6\":\"Überschrift 6\",\"components.controls.blocktype.blockquote\":\"Zitat\",\"components.controls.blocktype.code\":\"Quellcode\",\"components.controls.blocktype.blocktype\":\"Blocktyp\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farbauswahl\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Hintergrund\",\"components.controls.embedded.embedded\":\"Eingebettet\",\"components.controls.embedded.embeddedlink\":\"Eingebetteter Link\",\"components.controls.embedded.enterlink\":\"Link eingeben\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Schriftart\",\"components.controls.fontsize.fontsize\":\"Schriftgröße\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Zurücknehmen\",\"components.controls.history.redo\":\"Wiederholen\",\"components.controls.image.image\":\"Bild\",\"components.controls.image.fileUpload\":\"Datei-Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Dateien ziehen und ablegen, oder klicken zum Hochladen\",\"components.controls.inline.bold\":\"Fett\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Unterstreichen\",\"components.controls.inline.strikethrough\":\"Durchstreichen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hochgestellt\",\"components.controls.inline.subscript\":\"Tiefgestellt\",\"components.controls.link.linkTitle\":\"Link-Titel\",\"components.controls.link.linkTarget\":\"Link-Ziel\",\"components.controls.link.linkTargetOption\":\"Link in neuem Fenster öffnen\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Aufheben\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Aufzählung\",\"components.controls.list.ordered\":\"Nummerierte Liste\",\"components.controls.list.indent\":\"Einzug vergrößern\",\"components.controls.list.outdent\":\"Einzug reduzieren\",\"components.controls.remove.remove\":\"Entfernen\",\"components.controls.textalign.textalign\":\"Textausrichtung\",\"components.controls.textalign.left\":\"Linksbündig\",\"components.controls.textalign.center\":\"Zentrieren\",\"components.controls.textalign.right\":\"Rechtsbündig\",\"components.controls.textalign.justify\":\"Blocksatz\"},da:{\"generic.add\":\"Tilføj\",\"generic.cancel\":\"Annuller\",\"components.controls.blocktype.h1\":\"Overskrift 1\",\"components.controls.blocktype.h2\":\"Overskrift 2\",\"components.controls.blocktype.h3\":\"Overskrift 3\",\"components.controls.blocktype.h4\":\"Overskrift 4\",\"components.controls.blocktype.h5\":\"Overskrift 5\",\"components.controls.blocktype.h6\":\"Overskrift 6\",\"components.controls.blocktype.blockquote\":\"Blokcitat\",\"components.controls.blocktype.code\":\"Kode\",\"components.controls.blocktype.blocktype\":\"Blok Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farver\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Baggrund\",\"components.controls.embedded.embedded\":\"Indlejre\",\"components.controls.embedded.embeddedlink\":\"Indlejre Link\",\"components.controls.embedded.enterlink\":\"Indtast link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonttype\",\"components.controls.fontsize.fontsize\":\"Fontstørrelser\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Fortryd\",\"components.controls.history.redo\":\"Gendan\",\"components.controls.image.image\":\"Billede\",\"components.controls.image.fileUpload\":\"Filoverførsel\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop filen eller klik for at uploade\",\"components.controls.inline.bold\":\"Fed\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Understrege\",\"components.controls.inline.strikethrough\":\"Gennemstreget\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hævet\",\"components.controls.inline.subscript\":\"Sænket\",\"components.controls.link.linkTitle\":\"Link Titel\",\"components.controls.link.linkTarget\":\"Link Mål\",\"components.controls.link.linkTargetOption\":\"Åbn link i nyt vindue\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Fjern link\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Uordnet\",\"components.controls.list.ordered\":\"Ordnet\",\"components.controls.list.indent\":\"Indrykning\",\"components.controls.list.outdent\":\"Udrykning\",\"components.controls.remove.remove\":\"Fjern\",\"components.controls.textalign.textalign\":\"Tekstjustering\",\"components.controls.textalign.left\":\"Venstre\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Højre\",\"components.controls.textalign.justify\":\"Margener\"},zh_tw:{\"generic.add\":\"新增\",\"generic.cancel\":\"取消\",\"components.controls.blocktype.h1\":\"標題1\",\"components.controls.blocktype.h2\":\"標題2\",\"components.controls.blocktype.h3\":\"標題3\",\"components.controls.blocktype.h4\":\"標題4\",\"components.controls.blocktype.h5\":\"標題5\",\"components.controls.blocktype.h6\":\"標題6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"程式碼\",\"components.controls.blocktype.blocktype\":\"樣式\",\"components.controls.blocktype.normal\":\"正文\",\"components.controls.colorpicker.colorpicker\":\"選色器\",\"components.controls.colorpicker.text\":\"文字\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"內嵌\",\"components.controls.embedded.embeddedlink\":\"內嵌網頁\",\"components.controls.embedded.enterlink\":\"輸入網頁地址\",\"components.controls.emoji.emoji\":\"表情符號\",\"components.controls.fontfamily.fontfamily\":\"字體\",\"components.controls.fontsize.fontsize\":\"字體大小\",\"components.controls.history.history\":\"歷史紀錄\",\"components.controls.history.undo\":\"復原\",\"components.controls.history.redo\":\"重做\",\"components.controls.image.image\":\"圖片\",\"components.controls.image.fileUpload\":\"檔案上傳\",\"components.controls.image.byURL\":\"網址\",\"components.controls.image.dropFileText\":\"點擊或拖曳檔案上傳\",\"components.controls.inline.bold\":\"粗體\",\"components.controls.inline.italic\":\"斜體\",\"components.controls.inline.underline\":\"底線\",\"components.controls.inline.strikethrough\":\"刪除線\",\"components.controls.inline.monospace\":\"等寬字體\",\"components.controls.inline.superscript\":\"上標\",\"components.controls.inline.subscript\":\"下標\",\"components.controls.link.linkTitle\":\"超連結\",\"components.controls.link.linkTarget\":\"輸入連結位址\",\"components.controls.link.linkTargetOption\":\"在新視窗打開連結\",\"components.controls.link.link\":\"連結\",\"components.controls.link.unlink\":\"刪除連結\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"項目符號\",\"components.controls.list.ordered\":\"編號\",\"components.controls.list.indent\":\"增加縮排\",\"components.controls.list.outdent\":\"減少縮排\",\"components.controls.remove.remove\":\"清除格式\",\"components.controls.textalign.textalign\":\"文字對齊\",\"components.controls.textalign.left\":\"文字向左對齊\",\"components.controls.textalign.center\":\"文字置中\",\"components.controls.textalign.right\":\"文字向右對齊\",\"components.controls.textalign.justify\":\"兩端對齊\"},pl:{\"generic.add\":\"Dodaj\",\"generic.cancel\":\"Anuluj\",\"components.controls.blocktype.h1\":\"Nagłówek 1\",\"components.controls.blocktype.h2\":\"Nagłówek 2\",\"components.controls.blocktype.h3\":\"Nagłówek 3\",\"components.controls.blocktype.h4\":\"Nagłówek 4\",\"components.controls.blocktype.h5\":\"Nagłówek 5\",\"components.controls.blocktype.h6\":\"Nagłówek 6\",\"components.controls.blocktype.blockquote\":\"Cytat\",\"components.controls.blocktype.code\":\"Kod\",\"components.controls.blocktype.blocktype\":\"Format\",\"components.controls.blocktype.normal\":\"Normalny\",\"components.controls.colorpicker.colorpicker\":\"Kolor\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Tło\",\"components.controls.embedded.embedded\":\"Osadź\",\"components.controls.embedded.embeddedlink\":\"Osadź odnośnik\",\"components.controls.embedded.enterlink\":\"Wprowadź odnośnik\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Krój czcionki\",\"components.controls.fontsize.fontsize\":\"Rozmiar czcionki\",\"components.controls.history.history\":\"Historia\",\"components.controls.history.undo\":\"Cofnij\",\"components.controls.history.redo\":\"Ponów\",\"components.controls.image.image\":\"Obrazek\",\"components.controls.image.fileUpload\":\"Prześlij plik\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Upuść plik lub kliknij, aby przesłać\",\"components.controls.inline.bold\":\"Pogrubienie\",\"components.controls.inline.italic\":\"Kursywa\",\"components.controls.inline.underline\":\"Podkreślenie\",\"components.controls.inline.strikethrough\":\"Przekreślenie\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Indeks górny\",\"components.controls.inline.subscript\":\"Indeks dolny\",\"components.controls.link.linkTitle\":\"Tytuł odnośnika\",\"components.controls.link.linkTarget\":\"Adres odnośnika\",\"components.controls.link.linkTargetOption\":\"Otwórz odnośnik w nowej karcie\",\"components.controls.link.link\":\"Wstaw odnośnik\",\"components.controls.link.unlink\":\"Usuń odnośnik\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Lista nieuporządkowana\",\"components.controls.list.ordered\":\"Lista uporządkowana\",\"components.controls.list.indent\":\"Zwiększ wcięcie\",\"components.controls.list.outdent\":\"Zmniejsz wcięcie\",\"components.controls.remove.remove\":\"Usuń\",\"components.controls.textalign.textalign\":\"Wyrównaj tekst\",\"components.controls.textalign.left\":\"Do lewej\",\"components.controls.textalign.center\":\"Do środka\",\"components.controls.textalign.right\":\"Do prawej\",\"components.controls.textalign.justify\":\"Wyjustuj\"},es:{\"generic.add\":\"Añadir\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Código\",\"components.controls.blocktype.blocktype\":\"Tipo de bloque\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Seleccionar color\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Subrayado\",\"components.controls.embedded.embedded\":\"Adjuntar\",\"components.controls.embedded.embeddedlink\":\"Adjuntar Link\",\"components.controls.embedded.enterlink\":\"Introducir link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fuente\",\"components.controls.fontsize.fontsize\":\"Tamaño de fuente\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Deshacer\",\"components.controls.history.redo\":\"Rehacer\",\"components.controls.image.image\":\"Imagen\",\"components.controls.image.fileUpload\":\"Subir archivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arrastra el archivo o haz click para subirlo\",\"components.controls.inline.bold\":\"Negrita\",\"components.controls.inline.italic\":\"Cursiva\",\"components.controls.inline.underline\":\"Subrayado\",\"components.controls.inline.strikethrough\":\"Tachado\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Sobreíndice\",\"components.controls.inline.subscript\":\"Subíndice\",\"components.controls.link.linkTitle\":\"Título del enlace\",\"components.controls.link.linkTarget\":\"Objetivo del enlace\",\"components.controls.link.linkTargetOption\":\"Abrir en nueva ventana\",\"components.controls.link.link\":\"Enlazar\",\"components.controls.link.unlink\":\"Desenlazar\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Desordenada\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Indentada\",\"components.controls.list.outdent\":\"Dentada\",\"components.controls.remove.remove\":\"Eliminar\",\"components.controls.textalign.textalign\":\"Alineación del texto\",\"components.controls.textalign.left\":\"Izquierda\",\"components.controls.textalign.center\":\"Centrado\",\"components.controls.textalign.right\":\"Derecha\",\"components.controls.textalign.justify\":\"Justificado\"},ja:{\"generic.add\":\"追加\",\"generic.cancel\":\"キャンセル\",\"components.controls.blocktype.h1\":\"見出し1\",\"components.controls.blocktype.h2\":\"見出し2\",\"components.controls.blocktype.h3\":\"見出し3\",\"components.controls.blocktype.h4\":\"見出し4\",\"components.controls.blocktype.h5\":\"見出し5\",\"components.controls.blocktype.h6\":\"見出し6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"コード\",\"components.controls.blocktype.blocktype\":\"スタイル\",\"components.controls.blocktype.normal\":\"標準テキスト\",\"components.controls.colorpicker.colorpicker\":\"テキストの色\",\"components.controls.colorpicker.text\":\"テキスト\",\"components.controls.colorpicker.background\":\"ハイライト\",\"components.controls.embedded.embedded\":\"埋め込み\",\"components.controls.embedded.embeddedlink\":\"埋め込みリンク\",\"components.controls.embedded.enterlink\":\"リンクを入力してください\",\"components.controls.emoji.emoji\":\"絵文字\",\"components.controls.fontfamily.fontfamily\":\"フォント\",\"components.controls.fontsize.fontsize\":\"フォントサイズ\",\"components.controls.history.history\":\"履歴\",\"components.controls.history.undo\":\"元に戻す\",\"components.controls.history.redo\":\"やり直し\",\"components.controls.image.image\":\"画像\",\"components.controls.image.fileUpload\":\"ファイルをアップロード\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"ここに画像をドラッグするか、クリックしてください\",\"components.controls.inline.bold\":\"太字\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下線\",\"components.controls.inline.strikethrough\":\"取り消し線\",\"components.controls.inline.monospace\":\"等幅フォント\",\"components.controls.inline.superscript\":\"上付き文字\",\"components.controls.inline.subscript\":\"下付き文字\",\"components.controls.link.linkTitle\":\"リンクタイトル\",\"components.controls.link.linkTarget\":\"リンク対象\",\"components.controls.link.linkTargetOption\":\"新しいウィンドウで開く\",\"components.controls.link.link\":\"リンク\",\"components.controls.link.unlink\":\"リンクを解除\",\"components.controls.list.list\":\"リスト\",\"components.controls.list.unordered\":\"箇条書き\",\"components.controls.list.ordered\":\"番号付き\",\"components.controls.list.indent\":\"インデント増\",\"components.controls.list.outdent\":\"インデント減\",\"components.controls.remove.remove\":\"書式をクリア\",\"components.controls.textalign.textalign\":\"整列\",\"components.controls.textalign.left\":\"左揃え\",\"components.controls.textalign.center\":\"中央揃え\",\"components.controls.textalign.right\":\"右揃え\",\"components.controls.textalign.justify\":\"両端揃え\"}};n(38),n(39);function _o(e){return(_o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function Po(){return(Po=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function Uo(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function Yo(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Uo(Object(n),!0).forEach(function(e){Fo(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Uo(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function Fo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ro(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}function Bo(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Qo(e,t){return!t||\"object\"!==_o(t)&&\"function\"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(e):t}function Ho(e){return(Ho=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Zo(e,t){return(Zo=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var Wo=function(){function r(e){var a;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(a=Qo(this,Ho(r).call(this,e))).onEditorBlur=function(){a.setState({editorFocused:!1})},a.onEditorFocus=function(e){var t=a.props.onFocus;a.setState({editorFocused:!0});var n=a.focusHandler.isEditorFocused();t&&n&&t(e)},a.onEditorMouseDown=function(){a.focusHandler.onEditorMouseDown()},a.keyBindingFn=function(e){if(\"Tab\"!==e.key)return\"ArrowUp\"!==e.key&&\"ArrowDown\"!==e.key||s()&&e.preventDefault(),Object(E.getDefaultKeyBinding)(e);var t=a.props.onTab;if(!t||!t(e)){var n=Object(C.changeDepth)(a.state.editorState,e.shiftKey?-1:1,4);n&&n!==a.state.editorState&&(a.onChange(n),e.preventDefault())}return null},a.onToolbarFocus=function(e){var t=a.props.onFocus;t&&a.focusHandler.isToolbarFocused()&&t(e)},a.onWrapperBlur=function(e){var t=a.props.onBlur;t&&a.focusHandler.isEditorBlur(e)&&t(e,a.getEditorState())},a.onChange=function(e){var t=a.props,n=t.readOnly,o=t.onEditorStateChange;n||\"atomic\"===Object(C.getSelectedBlocksType)(e)&&e.getSelection().isCollapsed||(o&&o(e,a.props.wrapperId),p(a.props,\"editorState\")?a.afterChange(e):a.setState({editorState:e},a.afterChange(e)))},a.setWrapperReference=function(e){a.wrapper=e},a.setEditorReference=function(e){a.props.editorRef&&a.props.editorRef(e),a.editor=e},a.getCompositeDecorator=function(e){var t=[].concat(Ro(a.props.customDecorators),[{strategy:uo,component:po({showOpenOptionOnHover:e.link.showOpenOptionOnHover})}]);return a.props.mention&&t.push.apply(t,Ro(So(Yo({},a.props.mention,{onChange:a.onChange,getEditorState:a.getEditorState,getSuggestions:a.getSuggestions,getWrapperRef:a.getWrapperRef,modalHandler:a.modalHandler})))),a.props.hashtag&&t.push(Lo(a.props.hashtag)),new E.CompositeDecorator(t)},a.getWrapperRef=function(){return a.wrapper},a.getEditorState=function(){return a.state?a.state.editorState:null},a.getSuggestions=function(){return a.props.mention&&a.props.mention.suggestions},a.afterChange=function(o){setTimeout(function(){var e=a.props,t=e.onChange,n=e.onContentStateChange;t&&t(Object(E.convertToRaw)(o.getCurrentContent())),n&&n(Object(E.convertToRaw)(o.getCurrentContent()))})},a.isReadOnly=function(){return a.props.readOnly},a.isImageAlignmentEnabled=function(){return a.state.toolbar.image.alignmentEnabled},a.createEditorState=function(e){var t;if(p(a.props,\"editorState\"))a.props.editorState&&(t=E.EditorState.set(a.props.editorState,{decorator:e}));else if(p(a.props,\"defaultEditorState\"))a.props.defaultEditorState&&(t=E.EditorState.set(a.props.defaultEditorState,{decorator:e}));else if(p(a.props,\"contentState\")){if(a.props.contentState){var n=Object(E.convertFromRaw)(a.props.contentState);t=E.EditorState.createWithContent(n,e),t=E.EditorState.moveSelectionToEnd(t)}}else if(p(a.props,\"defaultContentState\")||p(a.props,\"initialContentState\")){var o=a.props.defaultContentState||a.props.initialContentState;o&&(o=Object(E.convertFromRaw)(o),t=E.EditorState.createWithContent(o,e),t=E.EditorState.moveSelectionToEnd(t))}return t=t||E.EditorState.createEmpty(e)},a.filterEditorProps=function(e){return t=e,n=[\"onChange\",\"onEditorStateChange\",\"onContentStateChange\",\"initialContentState\",\"defaultContentState\",\"contentState\",\"editorState\",\"defaultEditorState\",\"locale\",\"localization\",\"toolbarOnFocus\",\"toolbar\",\"toolbarCustomButtons\",\"toolbarClassName\",\"editorClassName\",\"toolbarHidden\",\"wrapperClassName\",\"toolbarStyle\",\"editorStyle\",\"wrapperStyle\",\"uploadCallback\",\"onFocus\",\"onBlur\",\"onTab\",\"mention\",\"hashtag\",\"ariaLabel\",\"customBlockRenderFunc\",\"customDecorators\",\"handlePastedText\",\"customStyleMap\"],o=Object.keys(t).filter(function(e){return n.indexOf(e)<0}),r={},o&&0<o.length&&o.forEach(function(e){r[e]=t[e]}),r;var t,n,o,r},a.getStyleMap=function(e){return Yo({},Object(C.getCustomStyleMap)(),{},e.customStyleMap)},a.changeEditorState=function(e){var t=Object(E.convertFromRaw)(e),n=a.state.editorState;return n=E.EditorState.push(n,t,\"insert-characters\"),n=E.EditorState.moveSelectionToEnd(n)},a.focusEditor=function(){setTimeout(function(){a.editor.focus()})},a.handleKeyCommand=function(e){var t=a.state,n=t.editorState,o=t.toolbar.inline;if(o&&0<=o.options.indexOf(e)){var r=E.RichUtils.handleKeyCommand(n,e);if(r)return a.onChange(r),!0}return!1},a.handleReturn=function(e){if(s())return!0;var t=a.state.editorState,n=Object(C.handleNewLine)(t,e);return!!n&&(a.onChange(n),!0)},a.handlePastedTextFn=function(e,t){var n=a.state.editorState,o=a.props,r=o.handlePastedText,i=o.stripPastedStyles;return r?r(e,t,n,a.onChange):!i&&function(e,t,n,o){var r=Object(C.getSelectedBlock)(n);if(r&&\"code\"===r.type){var i=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),e,n.getCurrentInlineStyle());return o(E.EditorState.push(n,i,\"insert-characters\")),!0}if(t){var a=j()(t),c=n.getCurrentContent();return a.entityMap.forEach(function(e,t){c=c.mergeEntityData(t,e)}),c=E.Modifier.replaceWithFragment(c,n.getSelection(),new N.List(a.contentBlocks)),o(E.EditorState.push(n,c,\"insert-characters\")),!0}return!1}(e,t,n,a.onChange)},a.preventDefault=function(e){\"INPUT\"===e.target.tagName||\"LABEL\"===e.target.tagName||\"TEXTAREA\"===e.target.tagName?a.focusHandler.onInputMouseDown():e.preventDefault()};var t=M(To,e.toolbar),n=e.wrapperId?e.wrapperId:Math.floor(1e4*Math.random());a.wrapperId=\"rdw-wrapper-\".concat(n),a.modalHandler=new i,a.focusHandler=new c,a.blockRendererFn=Ao({isReadOnly:a.isReadOnly,isImageAlignmentEnabled:a.isImageAlignmentEnabled,getEditorState:a.getEditorState,onChange:a.onChange},e.customBlockRenderFunc),a.editorProps=a.filterEditorProps(e),a.customStyleMap=a.getStyleMap(e),a.compositeDecorator=a.getCompositeDecorator(t);var o=a.createEditorState(a.compositeDecorator);return Object(C.extractInlineStyle)(o),a.state={editorState:o,editorFocused:!1,toolbar:t},a}var e,t,n;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Zo(e,t)}(r,m[\"Component\"]),e=r,(t=[{key:\"componentDidMount\",value:function(){this.modalHandler.init(this.wrapperId)}},{key:\"componentDidUpdate\",value:function(e){if(e!==this.props){var t={},n=this.props,o=n.editorState,r=n.contentState;if(!this.state.toolbar){var i=M(To,i);t.toolbar=i}if(p(this.props,\"editorState\")&&o!==e.editorState)t.editorState=o?E.EditorState.set(o,{decorator:this.compositeDecorator}):E.EditorState.createEmpty(this.compositeDecorator);else if(p(this.props,\"contentState\")&&r!==e.contentState)if(r){var a=this.changeEditorState(r);a&&(t.editorState=a)}else t.editorState=E.EditorState.createEmpty(this.compositeDecorator);e.editorState===o&&e.contentState===r||Object(C.extractInlineStyle)(t.editorState),Object.keys(t).length&&this.setState(t),this.editorProps=this.filterEditorProps(this.props),this.customStyleMap=this.getStyleMap(this.props)}}},{key:\"render\",value:function(){var e=this.state,t=e.editorState,n=e.editorFocused,r=e.toolbar,o=this.props,i=o.locale,a=o.localization,c=a.locale,l=a.translations,s=o.toolbarCustomButtons,u=o.toolbarOnFocus,p=o.toolbarClassName,d=o.toolbarHidden,m=o.editorClassName,f=o.wrapperClassName,g=o.toolbarStyle,y=o.editorStyle,h=o.wrapperStyle,M=o.uploadCallback,b=o.ariaLabel,j={modalHandler:this.modalHandler,editorState:t,onChange:this.onChange,translations:Yo({},zo[i||c],{},l)},N=n||this.focusHandler.isInputFocused()||!u;return S.a.createElement(\"div\",{id:this.wrapperId,className:L()(f,\"rdw-editor-wrapper\"),style:h,onClick:this.modalHandler.onEditorClick,onBlur:this.onWrapperBlur,\"aria-label\":\"rdw-wrapper\"},!d&&S.a.createElement(\"div\",{className:L()(\"rdw-editor-toolbar\",p),style:Yo({visibility:N?\"visible\":\"hidden\"},g),onMouseDown:this.preventDefault,\"aria-label\":\"rdw-toolbar\",\"aria-hidden\":(!n&&u).toString(),onFocus:this.onToolbarFocus},r.options.map(function(e,t){var n=ro[e],o=r[e];return\"image\"===e&&M&&(o.uploadCallback=M),S.a.createElement(n,Po({key:t},j,{config:o}))}),s&&s.map(function(e,t){return S.a.cloneElement(e,Yo({key:t},j))})),S.a.createElement(\"div\",{ref:this.setWrapperReference,className:L()(m,\"rdw-editor-main\"),style:y,onClick:this.focusEditor,onFocus:this.onEditorFocus,onBlur:this.onEditorBlur,onKeyDown:k.onKeyDown,onMouseDown:this.onEditorMouseDown},S.a.createElement(E.Editor,Po({ref:this.setEditorReference,keyBindingFn:this.keyBindingFn,editorState:t,onChange:this.onChange,blockStyleFn:D,customStyleMap:this.getStyleMap(this.props),handleReturn:this.handleReturn,handlePastedText:this.handlePastedTextFn,blockRendererFn:this.blockRendererFn,handleKeyCommand:this.handleKeyCommand,ariaLabel:b||\"rdw-editor\",blockRenderMap:C.blockRenderMap},this.editorProps))))}}])&&Bo(e.prototype,t),n&&Bo(e,n),r}();Wo.propTypes={onChange:f.a.func,onEditorStateChange:f.a.func,onContentStateChange:f.a.func,initialContentState:f.a.object,defaultContentState:f.a.object,contentState:f.a.object,editorState:f.a.object,defaultEditorState:f.a.object,toolbarOnFocus:f.a.bool,spellCheck:f.a.bool,stripPastedStyles:f.a.bool,toolbar:f.a.object,toolbarCustomButtons:f.a.array,toolbarClassName:f.a.string,toolbarHidden:f.a.bool,locale:f.a.string,localization:f.a.object,editorClassName:f.a.string,wrapperClassName:f.a.string,toolbarStyle:f.a.object,editorStyle:f.a.object,wrapperStyle:f.a.object,uploadCallback:f.a.func,onFocus:f.a.func,onBlur:f.a.func,onTab:f.a.func,mention:f.a.object,hashtag:f.a.object,textAlignment:f.a.string,readOnly:f.a.bool,tabIndex:f.a.number,placeholder:f.a.string,ariaLabel:f.a.string,ariaOwneeID:f.a.string,ariaActiveDescendantID:f.a.string,ariaAutoComplete:f.a.string,ariaDescribedBy:f.a.string,ariaExpanded:f.a.string,ariaHasPopup:f.a.string,customBlockRenderFunc:f.a.func,wrapperId:f.a.number,customDecorators:f.a.array,editorRef:f.a.func,handlePastedText:f.a.func},Wo.defaultProps={toolbarOnFocus:!1,toolbarHidden:!1,stripPastedStyles:!1,localization:{locale:\"en\",translations:{}},customDecorators:[]};var Go=Wo;n.d(t,\"Editor\",function(){return Go})}],i.c=c,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=8);function i(e){if(c[e])return c[e].exports;var t=c[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var a,c});","function areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (newInputs[i] !== lastInputs[i]) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n"],"sourceRoot":""}