diff --git a/HISTORY.md b/HISTORY.md index daa0d80..56e1b7a 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -3,6 +3,12 @@ https://github.com/josdejong/jsoneditor +## 2017-06-25, version 5.7.1 + +- Upgraded dependency `ajv` to version `5.2.0`. Resolves warnings in + Webpack build processes. + + ## 2017-05-26, version 5.7.0 - Implemented support for template items. Thanks @israelito3000. diff --git a/dist/jsoneditor-minimalist.js b/dist/jsoneditor-minimalist.js index cfab998..6ae408d 100644 --- a/dist/jsoneditor-minimalist.js +++ b/dist/jsoneditor-minimalist.js @@ -24,8 +24,8 @@ * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.7.0 - * @date 2017-05-26 + * @version 5.7.1 + * @date 2017-06-25 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') diff --git a/dist/jsoneditor-minimalist.map b/dist/jsoneditor-minimalist.map index 59af779..66dc905 100644 --- a/dist/jsoneditor-minimalist.map +++ b/dist/jsoneditor-minimalist.map @@ -1 +1 @@ -{"version":3,"sources":["./dist/jsoneditor-minimalist.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","e","code","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","node","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","search","hasOwnProperty","debounce","bind","Function","content","table","params","field","value","_setRoot","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","updateDom","recurse","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","index","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","splice","obj","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","charAt","prev","chars","match","quote","test","pp","specialValues","key","regexp","join","escapeUnicodeChars","replace","charCodeAt","toString","a","b","object","Number","String","Boolean","RegExp","isUrlRegex","isUrl","getAbsoluteLeft","elem","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","additionalProperty","insideRect","margin","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","str","hash","lex","token","self","lexer","stack","vstack","lstack","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","n","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","unput","less","pastInput","past","upcomingInput","pre","tempMatch","lines","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","searchFieldActive","searchValueActive","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","childsHeight","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","path","getPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","count","checkbox","tdCheckbox","checked","enum","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","fieldText","_escapeHTML","_updateSchema","_updateDomIndexes","_findSchema","_findEnum","composite","oneOf","anyOf","allOf","childSchema","properties","_createDomValue","href","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","addTemplates","templates","appendData","insertData","template","titles","appendSubmenu","insertSubmenu","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","re","sre","dre","hre","s","insensitive","x","y","xN","yN","xD","parseInt","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","emptyNode","isReadOnly","editorDom","edit","$blockScrolling","Infinity","setTheme","setOptions","readOnly","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","acequire","oop","TextHighlightRules","JsonHighlightRules","$rules","regex","inherits","Range","MatchingBraceOutdent","checkOutdent","autoOutdent","doc","row","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","session","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","isMultiLine","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","depth","TextMode","Mode","HighlightRules","CstyleBehaviour","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","src","lang","HashHandler","keyUtil","importCssString","showReplaceForm","div","$init","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","addListener","activeInput","t","getAttribute","$searchBarKb","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","find","schedule","$closeSearchBarKb","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","$syncOptions","setCssClass","$search","$options","renderer","updateBackMarkers","skipCurrent","backwards","preventScroll","wrap","regExp","caseSensitive","wholeWord","noMatch","_emit","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","isFocused","el","activeElement","Search","getTextRange","isDark","cssClass","cssText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,UAAWH,GACe,gBAAZC,SACdA,QAAoB,WAAID,IAExBD,EAAiB,WAAIC,KACpBK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAE/B,YAgDA,SAASS,GAAYC,EAAWC,EAASC,GACvC,KAAMd,eAAgBW,IACpB,KAAM,IAAII,OAAM,+CAIlB,IAAIC,GAAYC,EAAKC,4BACrB,KAAkB,GAAdF,GAAmBA,EAAY,EACjC,KAAM,IAAID,OAAM,iGAIlB,IAAIF,IAEEA,EAAQM,QACVC,QAAQC,KAAK,gDACbR,EAAQS,QAAUT,EAAQM,YACnBN,GAAQM,OAEbN,EAAQU,SACVH,QAAQC,KAAK,kDACbR,EAAQW,SAAWX,EAAQU,aACpBV,GAAQU,QAEbV,EAAQY,WACVL,QAAQC,KAAK,sDACbR,EAAQa,WAAab,EAAQY,eACtBZ,GAAQY,UAIbZ,GAAS,CACX,GAAIc,IACF,MAAO,QACP,MAAO,SAAS,YAChB,WAAY,aAAc,UAAW,eACrC,gBAAiB,UAAW,SAAU,OAAQ,QAAS,OAAQ,cAAe,iBAGhFC,QAAOC,KAAKhB,GAASiB,QAAQ,SAAUC,IACE,IAAnCJ,EAAcK,QAAQD,IACxBX,QAAQC,KAAK,mBAAqBU,EAAS,oCAM/CE,UAAUC,QACZlC,KAAKmC,QAAQvB,EAAWC,EAASC,GA9FrC,GAAIsB,EACJ,KACEA,EAAMlC,GAAsB,WAAkC,GAAImC,GAAI,GAAItB,OAAM,2BAA4D,MAA7BsB,GAAEC,KAAO,mBAA0BD,MAEpJ,MAAOE,IAIP,GAAIC,GAAWtC,EAAoB,GAC/BuC,EAAWvC,EAAoB,IAC/Be,EAAOf,EAAoB,EAuG/BS,GAAW+B,SAGX/B,EAAWgC,UAAUC,kBAAoB,IASzCjC,EAAWgC,UAAUR,QAAU,SAAUvB,EAAWC,EAASC,GAC3Dd,KAAKY,UAAYA,EACjBZ,KAAKa,QAAUA,MACfb,KAAKc,KAAOA,KAEZ,IAAI+B,GAAO7C,KAAKa,QAAQgC,MAAQ,MAChC7C,MAAK8C,QAAQD,IAMflC,EAAWgC,UAAUI,QAAU,aAM/BpC,EAAWgC,UAAUK,IAAM,SAAUlC,GACnCd,KAAKc,KAAOA,GAOdH,EAAWgC,UAAUM,IAAM,WACzB,MAAOjD,MAAKc,MAOdH,EAAWgC,UAAUO,QAAU,SAAUC,GACvCnD,KAAKc,KAAOG,EAAKmC,MAAMD,IAOzBxC,EAAWgC,UAAUU,QAAU,WAC7B,MAAOC,MAAKC,UAAUvD,KAAKc,OAO7BH,EAAWgC,UAAUa,QAAU,SAAUC,GAClCzD,KAAKa,UACRb,KAAKa,YAEPb,KAAKa,QAAQ4C,KAAOA,GAOtB9C,EAAWgC,UAAUe,QAAU,WAC7B,MAAO1D,MAAKa,SAAWb,KAAKa,QAAQ4C,MAStC9C,EAAWgC,UAAUG,QAAU,SAAUD,GACvC,GAGIc,GACAF,EAJA7C,EAAYZ,KAAKY,UACjBC,EAAUI,EAAK2C,UAAW5D,KAAKa,SAC/BgD,EAAUhD,EAAQgC,IAItBhC,GAAQgC,KAAOA,CACf,IAAIiB,GAASnD,EAAW+B,MAAMG,EAC9B,KAAIiB,EAqCF,KAAM,IAAI/C,OAAM,iBAAmBF,EAAQgC,KAAO,IApClD,KACE,GAAIkB,GAAyB,QAAfD,EAAOH,IAYrB,IAXAF,EAAOzD,KAAK0D,UACZC,EAAO3D,KAAK+D,EAAS,UAAY,SAEjC/D,KAAK+C,UACL9B,EAAK+C,MAAMhE,MACXiB,EAAK2C,OAAO5D,KAAM8D,EAAOG,OACzBjE,KAAKkE,OAAOtD,EAAWC,GAEvBb,KAAKwD,QAAQC,GACbzD,KAAK+D,EAAS,UAAY,OAAOJ,GAEN,kBAAhBG,GAAOK,KAChB,IACEL,EAAOK,KAAK5D,KAAKP,MAEnB,MAAOuC,GACLnB,QAAQD,MAAMoB,GAIlB,GAAoC,kBAAzB1B,GAAQuD,cAA+BvB,IAASgB,EACzD,IACEhD,EAAQuD,aAAavB,EAAMgB,GAE7B,MAAOtB,GACLnB,QAAQD,MAAMoB,IAIpB,MAAOA,GACLvC,KAAKqE,SAAS9B,KAYpB5B,EAAWgC,UAAU2B,QAAU,WAC7B,MAAOtE,MAAKa,QAAQgC,MAStBlC,EAAWgC,UAAU0B,SAAW,SAAS9B,GACvC,IAAIvC,KAAKa,SAA2C,kBAAzBb,MAAKa,QAAQS,QAItC,KAAMiB,EAHNvC,MAAKa,QAAQS,QAAQiB,IAYzB5B,EAAWgC,UAAU4B,UAAY,SAAUC,GAEzC,GAAIA,EAAQ,CACV,GAAIC,EACJ,KAEEA,EAAMzE,KAAKa,QAAQ4D,KAAOrC,GAAMsC,WAAW,EAAMC,SAAS,IAG5D,MAAOpC,GACLnB,QAAQC,KAAK,iMAGXoD,IACAzE,KAAK4E,eAAiBH,EAAII,QAAQL,GAIlCxE,KAAKa,QAAQ2D,OAASA,EAGxBxE,KAAK8E,YAGP9E,KAAK+E,cAIL/E,MAAK4E,eAAiB,KACtB5E,KAAKa,QAAQ2D,OAAS,KACtBxE,KAAK8E,WACL9E,KAAK+E,WAQTpE,EAAWgC,UAAUmC,SAAW,aAOhCnE,EAAWgC,UAAUoC,QAAU,aAuB/BpE,EAAWqE,aAAe,SAAUnC,GAClC,GAAIoC,GAAGC,CAEP,IAAIjE,EAAKkE,QAAQtC,GAEf,IAAKoC,EAAI,EAAGA,EAAIpC,EAAKX,OAAQ+C,IAC3BtE,EAAWqE,aAAanC,EAAKoC,QAG5B,CAEH,KAAM,QAAUpC,IAAO,KAAM,IAAI9B,OAAM,0BACvC,MAAM,SAAW8B,IAAO,KAAM,IAAI9B,OAAM,2BACxC,MAAM,QAAU8B,IAAO,KAAM,IAAI9B,OAAM,0BACvC,IAAI0C,GAAOZ,EAAKA,IAChB,IAAIY,IAAQ9C,GAAW+B,MACrB,KAAM,IAAI3B,OAAM,SAAW0C,EAAO,uBAIpC,IAAiC,kBAAtBZ,GAAKoB,MAAMC,OACpB,KAAM,IAAInD,OAAM,8CAElB,IAAIqE,IAAY,UAAW,eAAgB,QAC3C,KAAKH,EAAI,EAAGA,EAAIG,EAASlD,OAAQ+C,IAE/B,IADAC,EAAOE,EAASH,KACJpC,GAAKoB,MACf,KAAM,IAAIlD,OAAM,sBAAwBmE,EAAO,yBAInDvE,GAAW+B,MAAMe,GAAQZ,IAK7BlC,EAAWqE,aAAaxC,GACxB7B,EAAWqE,aAAavC,GAExB5C,EAAOD,QAAUe,GAKZ,SAASd,EAAQD,EAASM,GAE/B,YAGA,IAAImF,GAAcnF,EAAoB,GAClCoF,EAAUpF,EAAoB,GAC9BqF,EAAYrF,EAAoB,GAChCsF,EAActF,EAAoB,GAClCuF,EAAOvF,EAAoB,GAC3BwF,EAAexF,EAAoB,IACnCe,EAAOf,EAAoB,GAG3BsC,IAsBJA,GAAS0B,OAAS,SAAUtD,EAAWC,GACrC,IAAKD,EACH,KAAM,IAAIG,OAAM,iCAElBf,MAAKY,UAAYA,EACjBZ,KAAK2F,OACL3F,KAAK4F,YAAc,GAAIP,GACvBrF,KAAK6F,cAAYC,GACjB9F,KAAK+F,gBACHC,UAEFhG,KAAK4E,eAAiB,KACtB5E,KAAKiG,cAELjG,KAAKkG,KAAO,KACZlG,KAAKmG,YAAc,KAEnBnG,KAAKoG,YAAYvF,GAEbb,KAAKa,QAAQwF,SAAiC,SAAtBrG,KAAKa,QAAQgC,OACvC7C,KAAKqG,QAAU,GAAIf,GAAQtF,OAG7BA,KAAKsG,eACLtG,KAAKuG,gBAMP/D,EAASO,QAAU,WACb/C,KAAKwG,OAASxG,KAAKY,WAAaZ,KAAKwG,MAAMC,YAAczG,KAAKY,YAChEZ,KAAKY,UAAU8F,YAAY1G,KAAKwG,OAChCxG,KAAKwG,MAAQ,MAEfxG,KAAKY,UAAY,KAEjBZ,KAAK2F,IAAM,KAEX3F,KAAKgE,QACLhE,KAAKkG,KAAO,KACZlG,KAAKmG,YAAc,KACnBnG,KAAK6F,UAAY,KACjB7F,KAAK+F,eAAiB,KACtB/F,KAAKiG,WAAa,KAClBjG,KAAK4E,eAAiB,KACtB5E,KAAK2G,mBAAqB,KAEtB3G,KAAKqG,UACPrG,KAAKqG,QAAQtD,UACb/C,KAAKqG,QAAU,MAGbrG,KAAK4G,YACP5G,KAAK4G,UAAU7D,UACf/C,KAAK4G,UAAY,MAGf5G,KAAK6G,eACP7G,KAAK6G,aAAa9D,UAClB/C,KAAK6G,aAAe,OASxBrE,EAAS4D,YAAc,SAAUvF,GAU/B,GATAb,KAAKa,SACHiG,QAAQ,EACRT,SAAS,EACTxD,KAAM,OACNY,SAAMqC,GACNtB,OAAQ,MAIN3D,EACF,IAAK,GAAIqE,KAAQrE,GACXA,EAAQkG,eAAe7B,KACzBlF,KAAKa,QAAQqE,GAAQrE,EAAQqE,GAMnClF,MAAKuE,UAAUvE,KAAKa,QAAQ2D,QAG5BxE,KAAK2G,mBAAqB1F,EAAK+F,SAAShH,KAAK8E,SAASmC,KAAKjH,MAAOA,KAAK4C,oBASzEJ,EAASQ,IAAM,SAAUlC,EAAM2C,GAS7B,GAPIA,IAEFrC,QAAQC,KAAK,qEACbrB,KAAKa,QAAQ4C,KAAOA,GAIlB3C,YAAgBoG,eAAsBpB,KAAThF,EAC/Bd,KAAKgE,YAEF,CACHhE,KAAKmH,QAAQT,YAAY1G,KAAKoH,MAG9B,IAAIC,IACFC,MAAOtH,KAAKa,QAAQ4C,KACpB8D,MAAOzG,GAELoF,EAAO,GAAIT,GAAKzF,KAAMqH,EAC1BrH,MAAKwH,SAAStB,GAGdlG,KAAK8E,UAIL9E,MAAKkG,KAAKuB,QADI,GAGdzH,KAAKmH,QAAQO,YAAY1H,KAAKoH,OAI5BpH,KAAKqG,SACPrG,KAAKqG,QAAQrC,QAIXhE,KAAK4G,WACP5G,KAAK4G,UAAU5C,SAQnBxB,EAASS,IAAM,WAEb,GAAIjD,KAAKmG,YAAa,CACpB,GAAID,GAAOT,EAAKkC,kBAAkB3H,KAAKmG,YACnCD,IACFA,EAAK0B,OAIT,MAAI5H,MAAKkG,KACAlG,KAAKkG,KAAK2B,eAGjB,IAQJrF,EAASa,QAAU,WACjB,MAAOC,MAAKC,UAAUvD,KAAKiD,QAO7BT,EAASU,QAAU,SAASC,GAC1BnD,KAAKgD,IAAI/B,EAAKmC,MAAMD,KAOtBX,EAASgB,QAAU,SAAUC,GAC3BzD,KAAKa,QAAQ4C,KAAOA,EAChBzD,KAAKkG,MACPlG,KAAKkG,KAAK4B,YAAY9H,KAAKa,QAAQ4C,OAQvCjB,EAASkB,QAAU,WACjB,MAAO1D,MAAKa,QAAQ4C,MAUtBjB,EAASuF,MAAQ,WACf,GAAIC,GAAQhI,KAAKmH,QAAQc,cAAc,yBACnCD,GACFA,EAAMD,QAEC/H,KAAKkG,KAAKP,IAAI8B,OACrBzH,KAAKkG,KAAKP,IAAI8B,OAAOM,QAEd/H,KAAKkG,KAAKP,IAAIuC,KACrBlI,KAAKkG,KAAKP,IAAIuC,KAAKH,SAInBC,EAAQhI,KAAKwG,MAAMyB,cAAc,YAE/BD,EAAMD,SAQZvF,EAASwB,MAAQ,WACXhE,KAAKkG,OACPlG,KAAKkG,KAAKiC,WACVnI,KAAKoI,MAAM1B,YAAY1G,KAAKkG,KAAKmC,gBAC1BrI,MAAKkG,OAShB1D,EAASgF,SAAW,SAAUtB,GAC5BlG,KAAKgE,QAELhE,KAAKkG,KAAOA,EAGZlG,KAAKoI,MAAMV,YAAYxB,EAAKmC,WAe9B7F,EAASsE,OAAS,SAAUwB,GAC1B,GAAIC,EAUJ,OATIvI,MAAKkG,MACPlG,KAAKmH,QAAQT,YAAY1G,KAAKoH,OAC9BmB,EAAUvI,KAAKkG,KAAKY,OAAOwB,GAC3BtI,KAAKmH,QAAQO,YAAY1H,KAAKoH,QAG9BmB,KAGKA,GAMT/F,EAASgG,UAAY,WACfxI,KAAKkG,OACPlG,KAAKmH,QAAQT,YAAY1G,KAAKoH,OAC9BpH,KAAKkG,KAAKuB,SACVzH,KAAKmH,QAAQO,YAAY1H,KAAKoH,SAOlC5E,EAASiG,YAAc,WACjBzI,KAAKkG,OACPlG,KAAKmH,QAAQT,YAAY1G,KAAKoH,OAC9BpH,KAAKkG,KAAKiC,WACVnI,KAAKmH,QAAQO,YAAY1H,KAAKoH,SAkBlC5E,EAASkG,UAAY,SAAUC,EAAQtB,GAEjCrH,KAAKqG,SACPrG,KAAKqG,QAAQuC,IAAID,EAAQtB,GAG3BrH,KAAK6I,aASPrG,EAASqG,UAAY,WAKnB,GAHA7I,KAAK2G,qBAGD3G,KAAKa,QAAQW,SACf,IACExB,KAAKa,QAAQW,WAEf,MAAOe,GACLnB,QAAQD,MAAM,+BAAgCoB,KASpDC,EAASsC,SAAW,WAEd9E,KAAKiG,YACPjG,KAAKiG,WAAWnE,QAAQ,SAAUoE,GAChCA,EAAK4C,SAAS,OAIlB,IAAIpJ,GAAOM,KAAKkG,IAChB,IAAKxG,EAAL,CAKA,GAAIqJ,GAAkBrJ,EAAKoF,WAGvBkE,IACJ,IAAIhJ,KAAK4E,eAAgB,CACX5E,KAAK4E,eAAelF,EAAKmI,cAGnCmB,EAAehJ,KAAK4E,eAAeqE,OAC9BC,IAAI,SAAU/H,GACb,MAAOF,GAAKkI,mBAAmBhI,KAEhC+H,IAAI,SAAmB/H,GACtB,OACE+E,KAAMxG,EAAK0J,SAASjI,EAAMkI,UAC1BlI,MAAOA,KAGVmI,OAAO,SAAkBC,GACxB,MAAqB,OAAdA,EAAMrD,QAMvBlG,KAAKiG,WAAa8C,EACbS,OAAOR,GACPS,OAAO,SAAwBC,EAAKH,GAGnC,MAAOA,GAAMrD,KACRyD,cACAT,IAAI,SAAUU,GACb,OACE1D,KAAM0D,EACNC,MAAON,EAAMrD,KACb/E,OACE2I,QAAyB,WAAhBF,EAAOG,KACV,8BACA,6BAIXP,OAAOE,GAAMH,SAGnBL,IAAI,SAAmBK,GAEtB,MADAA,GAAMrD,KAAK4C,SAASS,EAAMpI,MAAOoI,EAAMM,OAChCN,EAAMrD,SAOrB1D,EAASuC,QAAU,WACb/E,KAAKkG,MACPlG,KAAKkG,KAAK8D,WAAWC,SAAS,KASlCzH,EAAS0H,gBAAkB,SAAUC,GACnC,GAAIC,GAAKpK,KACLmH,EAAUnH,KAAKmH,QACfkD,EAAMpJ,EAAKqJ,eAAenD,GAC1BoD,EAASpD,EAAQqD,aACjBC,EAASJ,EAAME,CAIdJ,GAASE,EAHD,IAGkBlD,EAAQuD,UAAY,EACjD1K,KAAK2K,gBAAmBN,EAJb,GAI6BF,GAAU,EAE3CA,EAASM,EANL,IAOTF,EAASpD,EAAQuD,UAAYvD,EAAQyD,aACvC5K,KAAK2K,gBAAmBF,EARb,GAQgCN,GAAU,EAGrDnK,KAAK2K,mBAAiB7E,GAGpB9F,KAAK2K,eACF3K,KAAK6K,kBACR7K,KAAK6K,gBAAkBC,YAAY,WAC7BV,EAAGO,eACLxD,EAAQuD,WAAaN,EAAGO,eAGxBP,EAAGW,kBApBI,KA0Bb/K,KAAK+K,kBAOTvI,EAASuI,eAAiB,WACpB/K,KAAK6K,kBACPG,aAAahL,KAAK6K,uBACX7K,MAAK6K,iBAEV7K,KAAK2K,sBACA3K,MAAK2K,gBAehBnI,EAASyI,aAAe,SAAUpF,GAC3BA,IAID,aAAeA,IAAa7F,KAAKmH,UAEnCnH,KAAKmH,QAAQuD,UAAY7E,EAAU6E,WAEjC7E,EAAUG,OAEZhG,KAAKkL,OAAOrF,EAAUG,OAEpBH,EAAUsF,OACZlK,EAAKmK,mBAAmBvF,EAAUsF,OAEhCtF,EAAUF,KACZE,EAAUF,IAAIoC,UAalBvF,EAAS6I,aAAe,WACtB,GAAIF,GAAQlK,EAAKqK,oBAKjB,OAJIH,IAAsC,QAA7BA,EAAMvK,UAAU2K,WAC3BJ,EAAQ,OAIRxF,IAAK3F,KAAKmG,YACVgF,MAAOA,EACPnF,MAAOhG,KAAK+F,eAAeC,MAAMwF,MAAM,GACvCd,UAAW1K,KAAKmH,QAAUnH,KAAKmH,QAAQuD,UAAY,IAavDlI,EAASiJ,SAAW,SAAUpB,EAAKqB,GACjC,GAAIvE,GAAUnH,KAAKmH,OACnB,IAAIA,EAAS,CACX,GAAIwE,GAAS3L,IAET2L,GAAOC,iBACTZ,aAAaW,EAAOC,sBACbD,GAAOC,gBAEZD,EAAOE,kBACTF,EAAOE,iBAAgB,SAChBF,GAAOE,gBAIhB,IAAItB,GAASpD,EAAQqD,aACjBC,EAAStD,EAAQyD,aAAeL,EAChCuB,EAAiBC,KAAKC,IAAID,KAAKE,IAAI5B,EAAME,EAAS,EAAG,GAAIE,GAGzDyB,EAAU,WACZ,GAAIxB,GAAYvD,EAAQuD,UACpByB,EAAQL,EAAiBpB,CACzBqB,MAAKK,IAAID,GAAQ,GACnBhF,EAAQuD,WAAayB,EAAO,EAC5BR,EAAOE,gBAAkBH,EACzBC,EAAOC,eAAiBS,WAAWH,EAAS,MAIxCR,GACFA,GAAS,GAEXvE,EAAQuD,UAAYoB,QACbH,GAAOC,qBACPD,GAAOE,iBAGlBK,SAGIR,IACFA,GAAS,IASflJ,EAAS8D,aAAe,WAQtB,QAASgG,GAAQC,GAGXZ,EAAOa,UACTb,EAAOa,SAASD,GAVpBvM,KAAKwG,MAAQiG,SAASC,cAAc,OACpC1M,KAAKwG,MAAMmG,UAAY,8BAAgC3M,KAAKa,QAAQgC,KACpE7C,KAAKY,UAAU8G,YAAY1H,KAAKwG,MAGhC,IAAImF,GAAS3L,IAQbA,MAAKwG,MAAMoG,QAAU,SAAUL,GAC7B,GAAIM,GAASN,EAAMM,MAEnBP,GAAQC,GAIe,UAAnBM,EAAOtB,UACTgB,EAAMO,kBAGV9M,KAAKwG,MAAMuG,QAAUT,EACrBtM,KAAKwG,MAAMwG,SAAWV,EACtBtM,KAAKwG,MAAMyG,UAAYX,EACvBtM,KAAKwG,MAAM0G,QAAUZ,EACrBtM,KAAKwG,MAAM2G,MAAQb,EACnBtM,KAAKwG,MAAM4G,QAAUd,EACrBtM,KAAKwG,MAAM6G,YAAcf,EACzBtM,KAAKwG,MAAM8G,UAAYhB,EACvBtM,KAAKwG,MAAM+G,YAAcjB,EACzBtM,KAAKwG,MAAMgH,WAAalB,EAIxBrL,EAAKwM,iBAAiBzN,KAAKwG,MAAO,QAAS8F,GAAS,GACpDrL,EAAKwM,iBAAiBzN,KAAKwG,MAAO,OAAQ8F,GAAS,GACnDtM,KAAKwG,MAAMkH,UAAYpB,EACvBtM,KAAKwG,MAAMmH,WAAarB,EAGxBtM,KAAKkI,KAAOuE,SAASC,cAAc,OACnC1M,KAAKkI,KAAKyE,UAAY,kBACtB3M,KAAKwG,MAAMkB,YAAY1H,KAAKkI,KAG5B,IAAIM,GAAYiE,SAASC,cAAc,SACvClE,GAAUuB,KAAO,SACjBvB,EAAUmE,UAAY,wBACtBnE,EAAUoF,MAAQ,oBAClBpF,EAAUoE,QAAU,WAClBjB,EAAOnD,aAETxI,KAAKkI,KAAKR,YAAYc,EAGtB,IAAIC,GAAcgE,SAASC,cAAc,SAUzC,IATAjE,EAAYsB,KAAO,SACnBtB,EAAYmF,MAAQ,sBACpBnF,EAAYkE,UAAY,0BACxBlE,EAAYmE,QAAU,WACpBjB,EAAOlD,eAETzI,KAAKkI,KAAKR,YAAYe,GAGlBzI,KAAKqG,QAAS,CAEhB,GAAIwH,GAAOpB,SAASC,cAAc,SAClCmB,GAAK9D,KAAO,SACZ8D,EAAKlB,UAAY,uCACjBkB,EAAKD,MAAQ,4BACbC,EAAKjB,QAAU,WACbjB,EAAOmC,WAET9N,KAAKkI,KAAKR,YAAYmG,GACtB7N,KAAK2F,IAAIkI,KAAOA,CAGhB,IAAIE,GAAOtB,SAASC,cAAc,SAClCqB,GAAKhE,KAAO,SACZgE,EAAKpB,UAAY,kBACjBoB,EAAKH,MAAQ,sBACbG,EAAKnB,QAAU,WACbjB,EAAOqC,WAEThO,KAAKkI,KAAKR,YAAYqG,GACtB/N,KAAK2F,IAAIoI,KAAOA,EAGhB/N,KAAKqG,QAAQ7E,SAAW,WACtBqM,EAAKI,UAAYtC,EAAOtF,QAAQ6H,UAChCH,EAAKE,UAAYtC,EAAOtF,QAAQ8H,WAElCnO,KAAKqG,QAAQ7E,WAIf,GAAIxB,KAAKa,SAAWb,KAAKa,QAAQ6B,OAAS1C,KAAKa,QAAQ6B,MAAMR,OAAQ,CACnE,GAAIkI,GAAKpK,IACTA,MAAK6G,aAAe,GAAInB,GAAa1F,KAAKkI,KAAMlI,KAAKa,QAAQ6B,MAAO1C,KAAKa,QAAQgC,KAAM,SAAkBA,GACvGuH,EAAGvD,aAAa9D,UAGhBqH,EAAGtH,QAAQD,GACXuH,EAAGvD,aAAakB,UAKhB/H,KAAKa,QAAQiG,SACf9G,KAAK4G,UAAY,GAAIrB,GAAUvF,KAAMA,KAAKkI,QAQ9C1F,EAASsL,QAAU,WACb9N,KAAKqG,UAEPrG,KAAKqG,QAAQwH,OAGb7N,KAAK6I,cAQTrG,EAASwL,QAAU,WACbhO,KAAKqG,UAEPrG,KAAKqG,QAAQ0H,OAGb/N,KAAK6I,cASTrG,EAASgK,SAAW,SAAUD,GACV,WAAdA,EAAMxC,MACR/J,KAAKoO,WAAW7B,GAGA,SAAdA,EAAMxC,OACR/J,KAAKmG,YAAcoG,EAAMM,QAGT,aAAdN,EAAMxC,MACR/J,KAAKqO,mBAAmB9B,GAER,aAAdA,EAAMxC,MAAqC,WAAdwC,EAAMxC,MAAmC,SAAdwC,EAAMxC,MAChE/J,KAAKsO,oBAAoB/B,EAG3B,IAAIrG,GAAOT,EAAKkC,kBAAkB4E,EAAMM,OAExC,IAAI3G,GAAQA,EAAKqI,SAAU,CACzB,GAAkB,SAAdhC,EAAMxC,KAAiB,CACzB,GAAIwC,EAAMM,QAAU3G,EAAKP,IAAIuC,KAI3B,WAHAlI,MAAKwO,gBAAgBjC,EAAMM,OAOxBN,GAAMkC,UACTzO,KAAK0O,WAIS,aAAdnC,EAAMxC,MAERtE,EAAKkJ,YAAY3O,KAAK+F,eAAeC,MAAOuG,OAI5B,aAAdA,EAAMxC,OACR/J,KAAK0O,WAEDxI,GAAQqG,EAAMM,QAAU3G,EAAKP,IAAIiJ,KAEnCnJ,EAAKkJ,YAAYzI,EAAMqG,KAEfrG,GAASqG,EAAMM,QAAU3G,EAAKP,IAAI2B,OAASiF,EAAMM,QAAU3G,EAAKP,IAAI4B,OAASgF,EAAMM,QAAU3G,EAAKP,IAAIuF,SAE9GlL,KAAK6O,oBAAoBtC,GAK3BrG,IACFA,EAAKoG,QAAQC,IAIjB/J,EAAS6L,mBAAqB,SAAU9B,GACtCvM,KAAK8O,mBACHC,cAAexC,EAAMM,OACrBmC,aAAczC,EAAM0C,MACpBC,aAAc3C,EAAM4C,MACpBC,aAAc,EACdX,UAAU,IAIdjM,EAAS8L,oBAAsB,SAAU/B,GAClCvM,KAAK8O,mBACR9O,KAAKqO,mBAAmB9B,EAG1B,IAAI8C,GAAQ9C,EAAM0C,MAAQjP,KAAK8O,kBAAkBE,aAC7CM,EAAQ/C,EAAM4C,MAAQnP,KAAK8O,kBAAkBI,YASjD,OAPAlP,MAAK8O,kBAAkBM,aAAerD,KAAKwD,KAAKF,EAAQA,EAAQC,EAAQA,GACxEtP,KAAK8O,kBAAkBL,SACnBzO,KAAK8O,kBAAkBL,UAAYzO,KAAK8O,kBAAkBM,aAAe,GAE7E7C,EAAM6C,aAAepP,KAAK8O,kBAAkBM,aAC5C7C,EAAMkC,SAAWzO,KAAK8O,kBAAkBL,SAEjClC,EAAM6C,cAQf5M,EAASqM,oBAAsB,SAAUtC,GACvC,GAAIrG,GAAOT,EAAKkC,kBAAkB4E,EAAMM,OAExC,IAA0B,SAAtB7M,KAAKa,QAAQgC,UAA+CiD,KAA5B9F,KAAKa,QAAQa,WAAjD,CAMA1B,KAAK+F,gBACHyJ,MAAOtJ,GAAQ,KACfuJ,IAAK,KACLzJ,UAGFhG,KAAKqO,mBAAmB9B,EAExB,IAAIZ,GAAS3L,IACRA,MAAK0P,YACR1P,KAAK0P,UAAYzO,EAAKwM,iBAAiBkC,OAAQ,YAAa,SAAUpD,GACpEZ,EAAOiE,eAAerD,MAGrBvM,KAAK6P,UACR7P,KAAK6P,QAAU5O,EAAKwM,iBAAiBkC,OAAQ,UAAW,SAAUpD,GAChEZ,EAAOmE,kBAAkBvD,QAW/B/J,EAASoN,eAAiB,SAAUrD,GAIlC,GAHAA,EAAMO,iBAEN9M,KAAKsO,oBAAoB/B,GACpBA,EAAMkC,SAAX,CAIA,GAAIvI,GAAOT,EAAKkC,kBAAkB4E,EAAMM,OAEpC3G,KAC+B,MAA7BlG,KAAK+F,eAAeyJ,QACtBxP,KAAK+F,eAAeyJ,MAAQtJ,GAE9BlG,KAAK+F,eAAe0J,IAAMvJ,GAI5BlG,KAAK0O,UAGL,IAAIc,GAAQxP,KAAK+F,eAAeyJ,MAC5BC,EAAMzP,KAAK+F,eAAe0J,KAAOzP,KAAK+F,eAAeyJ,KACrDA,IAASC,IAEXzP,KAAK+F,eAAeC,MAAQhG,KAAK+P,mBAAmBP,EAAOC,GAC3DzP,KAAKkL,OAAOlL,KAAK+F,eAAeC,UASpCxD,EAASsN,kBAAoB,SAAUvD,GAEjCvM,KAAK+F,eAAeC,MAAM,IAC5BhG,KAAK+F,eAAeC,MAAM,GAAGL,IAAIuC,KAAKH,QAGxC/H,KAAK+F,eAAeyJ,MAAQ,KAC5BxP,KAAK+F,eAAe0J,IAAM,KAGtBzP,KAAK0P,YACPzO,EAAK+O,oBAAoBL,OAAQ,YAAa3P,KAAK0P,iBAC5C1P,MAAK0P,WAEV1P,KAAK6P,UACP5O,EAAK+O,oBAAoBL,OAAQ,UAAW3P,KAAK6P,eAC1C7P,MAAK6P,UAShBrN,EAASkM,SAAW,SAAUuB,GAC5BjQ,KAAK+F,eAAeC,MAAMlE,QAAQ,SAAUoE,GAC1CA,EAAKgK,aAAY,KAEnBlQ,KAAK+F,eAAeC,SAEhBiK,IACFjQ,KAAK+F,eAAeyJ,MAAQ,KAC5BxP,KAAK+F,eAAe0J,IAAM,OAQ9BjN,EAAS0I,OAAS,SAAUlF,GAC1B,IAAKmK,MAAMhL,QAAQa,GACjB,MAAOhG,MAAKkL,QAAQlF,GAGtB,IAAIA,EAAO,CACThG,KAAK0O,WAEL1O,KAAK+F,eAAeC,MAAQA,EAAMwF,MAAM,EAExC,IAAI4E,GAAQpK,EAAM,EAClBA,GAAMlE,QAAQ,SAAUoE,GACtBA,EAAKgK,aAAY,EAAMhK,IAASkK,OActC5N,EAASuN,mBAAqB,SAAUP,EAAOC,GAI7C,IAHA,GAAIY,GAAYb,EAAMc,cAClBC,EAAUd,EAAIa,cACdrL,EAAI,EACDA,EAAIoL,EAAUnO,QAAUmO,EAAUpL,KAAOsL,EAAQtL,IACtDA,GAEF,IAAIvF,GAAO2Q,EAAUpL,EAAI,GACrBuL,EAAaH,EAAUpL,GACvBwL,EAAWF,EAAQtL,EAgBvB,IAdKuL,GAAeC,IACd/Q,EAAKkK,QAEP4G,EAAa9Q,EACb+Q,EAAW/Q,EACXA,EAAOA,EAAKkK,SAIZ4G,EAAa9Q,EAAKgR,OAAO,GACzBD,EAAW/Q,EAAKgR,OAAOhR,EAAKgR,OAAOxO,OAAS,KAI5CxC,GAAQ8Q,GAAcC,EAAU,CAClC,GAAIE,GAAajR,EAAKgR,OAAO1O,QAAQwO,GACjCI,EAAWlR,EAAKgR,OAAO1O,QAAQyO,GAC/BI,EAAa9E,KAAKC,IAAI2E,EAAYC,GAClCE,EAAY/E,KAAKE,IAAI0E,EAAYC,EAErC,OAAOlR,GAAKgR,OAAOlF,MAAMqF,EAAYC,EAAY,GAGjD,UASJtO,EAAS4L,WAAa,SAAU7B,GAC9B,GAAIwE,GAASxE,EAAMyE,OAASzE,EAAM0E,QAC9BC,EAAU3E,EAAM2E,QAChBC,EAAW5E,EAAM4E,SACjBC,GAAU,CAEd,IAAc,GAAVL,EAAa,CACf,GAAI3G,GAAKpK,IACTqM,YAAW,WAETpL,EAAKoQ,sBAAsBjH,EAAGjE,cAC7B,GAGL,GAAInG,KAAK4G,UACP,GAAIsK,GAAqB,IAAVH,EACb/Q,KAAK4G,UAAUjB,IAAImB,OAAOiB,QAC1B/H,KAAK4G,UAAUjB,IAAImB,OAAOoE,SAC1BkG,GAAU,MAEP,IAAc,KAAVL,GAAkBG,GAAqB,IAAVH,EAAe,CAE9CI,EAMHnR,KAAK4G,UAAU0K,UAPL,GAGVtR,KAAK4G,UAAU2K,MAHL,GAUZH,GAAU,EAIVpR,KAAKqG,UACH6K,IAAYC,GAAsB,IAAVJ,GAE1B/Q,KAAK8N,UACLsD,GAAU,GAEHF,GAAWC,GAAsB,IAAVJ,IAE9B/Q,KAAKgO,UACLoD,GAAU,IAIVA,IACF7E,EAAMO,iBACNP,EAAMiF,oBAQVhP,EAAS+D,aAAe,WACtB,GAAIkL,GAAehF,SAASC,cAAc,MAC1C+E,GAAa9E,UAAY,mBACzB3M,KAAKyR,aAAeA,EAEpBzR,KAAKmH,QAAUsF,SAASC,cAAc,OACtC1M,KAAKmH,QAAQwF,UAAY,kBACzB8E,EAAa/J,YAAY1H,KAAKmH,SAE9BnH,KAAKoH,MAAQqF,SAASC,cAAc,SACpC1M,KAAKoH,MAAMuF,UAAY,kBACvB3M,KAAKmH,QAAQO,YAAY1H,KAAKoH,MAI9B,IAAIsK,EACJ1R,MAAK2R,gBAAkBlF,SAASC,cAAc,YACpB,SAAtB1M,KAAKa,QAAQgC,OACf6O,EAAMjF,SAASC,cAAc,OAC7BgF,EAAIE,MAAQ,OACZ5R,KAAK2R,gBAAgBjK,YAAYgK,IAEnCA,EAAMjF,SAASC,cAAc,OAC7BgF,EAAIE,MAAQ,OACZ5R,KAAK2R,gBAAgBjK,YAAYgK,GACjCA,EAAMjF,SAASC,cAAc,OAC7B1M,KAAK2R,gBAAgBjK,YAAYgK,GACjC1R,KAAKoH,MAAMM,YAAY1H,KAAK2R,iBAE5B3R,KAAKoI,MAAQqE,SAASC,cAAc,SACpC1M,KAAKoH,MAAMM,YAAY1H,KAAKoI,OAE5BpI,KAAKwG,MAAMkB,YAAY+J,IAUzBjP,EAASgM,gBAAkB,SAAUqD,EAAQC,GAC3C,GAAIC,MACApG,EAAS3L,IAGb+R,GAAMC,MACJ1J,KAAM,YACNsF,MAAO,qCACPjB,UAAW,uBACXsF,MAAO,WACLxM,EAAKyM,YAAYvG,EAAO5F,eAAeC,UAK3C+L,EAAMC,MACJ1J,KAAM,SACNsF,MAAO,oCACPjB,UAAW,oBACXsF,MAAO,WACLxM,EAAK0M,SAASxG,EAAO5F,eAAeC,UAI7B,GAAIR,GAAYuM,GAAQK,MAAON,IACrCO,KAAKR,EAAQ7R,KAAKmH,UAKzBtH,EAAOD,UAEHiD,KAAM,OACNoB,MAAOzB,EACPmB,KAAM,SAGNd,KAAM,OACNoB,MAAOzB,EACPmB,KAAM,SAGNd,KAAM,OACNoB,MAAOzB,EACPmB,KAAM,UAOL,SAAS9D,EAAQD,GAEtB,YAOA,SAASyF,KACPrF,KAAKsS,QAAS,EAOhBjN,EAAY1C,UAAU4P,UAAY,SAAUrM,GACtClG,KAAKsS,SAILtS,KAAKkG,MAAQA,IAEXlG,KAAKkG,MACPlG,KAAKkG,KAAKsM,cAAa,GAIzBxS,KAAKkG,KAAOA,EACZlG,KAAKkG,KAAKsM,cAAa,IAIzBxS,KAAKyS,uBAOPpN,EAAY1C,UAAU+P,YAAc,WAClC,IAAI1S,KAAKsS,OAAT,CAIA,GAAIlI,GAAKpK,IACLA,MAAKkG,OACPlG,KAAKyS,qBAKLzS,KAAK2S,iBAAmBtG,WAAW,WACjCjC,EAAGlE,KAAKsM,cAAa,GACrBpI,EAAGlE,SAAOJ,GACVsE,EAAGuI,qBAAmB7M,IACrB,MAQPT,EAAY1C,UAAU8P,mBAAqB,WACrCzS,KAAK2S,mBACP3H,aAAahL,KAAK2S,kBAClB3S,KAAK2S,qBAAmB7M,KAQ5BT,EAAY1C,UAAUiQ,KAAO,WAC3B5S,KAAKsS,QAAS,GAMhBjN,EAAY1C,UAAUkQ,OAAS,WAC7B7S,KAAKsS,QAAS,GAGhBzS,EAAOD,QAAUyF,GAKZ,SAASxF,EAAQD,EAASM,GAE/B,YASA,SAASoF,GAASqG,GAChB3L,KAAK2L,OAASA,EACd3L,KAAKqG,WACLrG,KAAK8S,OAAS,EAEd9S,KAAKgE,QAGLhE,KAAK+S,SACHC,WACEnF,KAAQ,SAAUxG,GAChBA,EAAOnB,KAAK4B,YAAYT,EAAO4L,WAEjClF,KAAQ,SAAU1G,GAChBA,EAAOnB,KAAK4B,YAAYT,EAAO6L,YAGnCC,WACEtF,KAAQ,SAAUxG,GAChBA,EAAOnB,KAAKkN,YAAY/L,EAAO4L,WAEjClF,KAAQ,SAAU1G,GAChBA,EAAOnB,KAAKkN,YAAY/L,EAAO6L,YAGnCG,YACExF,KAAQ,SAAUxG,GAChBA,EAAOnB,KAAKmN,WAAWhM,EAAOiM,UAEhCvF,KAAQ,SAAU1G,GAChBA,EAAOnB,KAAKmN,WAAWhM,EAAOkM,WAIlCC,aACE3F,KAAQ,SAAUxG,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOlD,YAAYR,MAG9B6H,KAAQ,SAAU1G,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOlC,YAAYxB,OAIhCuN,mBACE5F,KAAQ,SAAUxG,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOlD,YAAYR,MAG9B6H,KAAQ,SAAU1G,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAO8J,aAAaxN,EAAMmB,EAAOsM,gBAI9CC,kBACE/F,KAAQ,SAAUxG,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOlD,YAAYR,MAG9B6H,KAAQ,SAAU1G,GAChB,GAAIwM,GAAYxM,EAAOwM,SACvBxM,GAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOkK,YAAYzM,EAAOnB,KAAM2N,GACvCA,EAAY3N,MAIlB6N,aACElG,KAAQ,SAAUxG,GAChB,GAAIuC,GAASvC,EAAOuC,OAChB+J,EAAa/J,EAAO8G,OAAOrJ,EAAOyL,QAAUlJ,EAAOoK,MACvD3M,GAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7B0D,EAAO8J,aAAaxN,EAAMyN,MAG9B5F,KAAQ,SAAU1G,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOlD,YAAYR,OAIhC+N,gBACEpG,KAAQ,SAAUxG,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOlD,YAAYR,MAG9B6H,KAAQ,SAAU1G,GAChB,GAAIwM,GAAYxM,EAAOwM,SACvBxM,GAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOuC,OAAOkK,YAAY5N,EAAM2N,GAChCA,EAAY3N,MAIlBgO,WACErG,KAAQ,SAAUxG,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAO8M,cAAcvK,OAAOwK,WAAWlO,EAAMmB,EAAO8M,kBAGxDpG,KAAQ,SAAU1G,GAChBA,EAAOrB,MAAMlE,QAAQ,SAAUoE,GAC7BmB,EAAOgN,cAAczK,OAAOwK,WAAWlO,EAAMmB,EAAOgN,mBAK1DC,MACEzG,KAAQ,SAAUxG,GAChB,GAAInB,GAAOmB,EAAOnB,IAClBA,GAAKqO,aACLrO,EAAKoO,KAAOjN,EAAOmN,QACnBtO,EAAKwK,OAASrJ,EAAOoN,UACrBvO,EAAKwO,cAEP3G,KAAQ,SAAU1G,GAChB,GAAInB,GAAOmB,EAAOnB,IAClBA,GAAKqO,aACLrO,EAAKoO,KAAOjN,EAAOsN,QACnBzO,EAAKwK,OAASrJ,EAAOuN,UACrB1O,EAAKwO,gBArIFxU,EAAoB,EAkJ/BoF,GAAQ3C,UAAUnB,SAAW,aAa7B8D,EAAQ3C,UAAUiG,IAAM,SAAUD,EAAQtB,GACxCrH,KAAK8S,QACL9S,KAAKqG,QAAQrG,KAAK8S,QAChBnK,OAAUA,EACVtB,OAAUA,EACVwN,UAAa,GAAIC,OAIf9U,KAAK8S,MAAQ9S,KAAKqG,QAAQnE,OAAS,GACrClC,KAAKqG,QAAQ0O,OAAO/U,KAAK8S,MAAQ,EAAG9S,KAAKqG,QAAQnE,OAASlC,KAAK8S,MAAQ,GAIzE9S,KAAKwB,YAMP8D,EAAQ3C,UAAUqB,MAAQ,WACxBhE,KAAKqG,WACLrG,KAAK8S,OAAS,EAGd9S,KAAKwB,YAOP8D,EAAQ3C,UAAUuL,QAAU,WAC1B,MAAQlO,MAAK8S,OAAS,GAOxBxN,EAAQ3C,UAAUwL,QAAU,WAC1B,MAAQnO,MAAK8S,MAAQ9S,KAAKqG,QAAQnE,OAAS,GAM7CoD,EAAQ3C,UAAUkL,KAAO,WACvB,GAAI7N,KAAKkO,UAAW,CAClB,GAAI8G,GAAMhV,KAAKqG,QAAQrG,KAAK8S,MAC5B,IAAIkC,EAAK,CACP,GAAIrM,GAAS3I,KAAK+S,QAAQiC,EAAIrM,OAC1BA,IAAUA,EAAOkF,MACnBlF,EAAOkF,KAAKmH,EAAI3N,QACZ2N,EAAI3N,OAAO4N,cACbjV,KAAK2L,OAAOV,aAAa+J,EAAI3N,OAAO4N,eAItC7T,QAAQD,MAAM,GAAIJ,OAAM,mBAAqBiU,EAAIrM,OAAS,MAG9D3I,KAAK8S,QAGL9S,KAAKwB,aAOT8D,EAAQ3C,UAAUoL,KAAO,WACvB,GAAI/N,KAAKmO,UAAW,CAClBnO,KAAK8S,OAEL,IAAIkC,GAAMhV,KAAKqG,QAAQrG,KAAK8S,MAC5B,IAAIkC,EAAK,CACP,GAAIrM,GAAS3I,KAAK+S,QAAQiC,EAAIrM,OAC1BA,IAAUA,EAAOoF,MACnBpF,EAAOoF,KAAKiH,EAAI3N,QACZ2N,EAAI3N,OAAO6N,cACblV,KAAK2L,OAAOV,aAAa+J,EAAI3N,OAAO6N,eAItC9T,QAAQD,MAAM,GAAIJ,OAAM,mBAAqBiU,EAAIrM,OAAS,MAK9D3I,KAAKwB,aAOT8D,EAAQ3C,UAAUI,QAAU,WAC1B/C,KAAK2L,OAAS,KAEd3L,KAAKqG,WACLrG,KAAK8S,OAAS,GAGhBjT,EAAOD,QAAU0F,GAKZ,SAASzF,EAAQD,EAASM,GAE/B,YAEA,IAAIiV,GAAWjV,EAAoB,EAQnCN,GAAQwD,MAAQ,SAAegS,GAC7B,IACE,MAAO9R,MAAKF,MAAMgS,GAEpB,MAAO7S,GAKL,KAHA3C,GAAQkF,SAASsQ,GAGX7S,IAYV3C,EAAQyV,SAAW,SAAUC,GAc3B,QAASC,KAAU,MAAOD,GAASE,OAAOvQ,GAC1C,QAASsM,KAAU,MAAO+D,GAASE,OAAOvQ,EAAI,GAC9C,QAASwQ,KAAU,MAAOH,GAASE,OAAOvQ,EAAI,GAd9C,GAAIyQ,MACAzQ,EAAI,EAKJ0Q,EAAQL,EAASK,MAAM,uEA+F3B,KA9FIA,IACFL,EAAWK,EAAM,IA6Fb1Q,EAAIqQ,EAASpT,QAAQ,CACzB,GAAIzB,GAAI8U,GAEE,OAAN9U,GAAwB,MAAX8Q,IAxEnB,WAEE,IADAtM,GAAK,EACEA,EAAIqQ,EAASpT,SAAsB,MAAXqT,KAA6B,MAAXhE,MAC/CtM,GAEFA,IAAK,KAsEU,MAANxE,GAAwB,MAAX8Q,IAlExB,WAEE,IADAtM,GAAK,EACEA,EAAIqQ,EAASpT,QAAsB,OAAXqT,KAC7BtQ,OAkEa,MAANxE,GAAoB,MAANA,EA7DzB,SAAqBmV,GACnBF,EAAM1D,KAAK,KACX/M,GAEA,KADA,GAAIxE,GAAI8U,IACDtQ,EAAIqQ,EAASpT,QAAUzB,IAAMmV,GACxB,MAANnV,GAAwB,OAAXgV,KAEfC,EAAM1D,KAAK,MAIH,OAANvR,IACFwE,IAIU,OAHVxE,EAAI8U,MAIFG,EAAM1D,KAAK,OAGf0D,EAAM1D,KAAKvR,GAEXwE,IACAxE,EAAI8U,GAEF9U,KAAMmV,IACRF,EAAM1D,KAAK,KACX/M,MAmCYxE,GAEL,aAAaoV,KAAKpV,KAAmD,KAA5C,IAAK,KAAKuB,QAhG9C,WAGE,IAFA,GAAItB,GAAIgV,EAAMxT,OAAS,EAEhBxB,GAAK,GAAG,CACb,GAAIoV,GAAKJ,EAAMhV,EACf,IAAW,MAAPoV,GAAqB,OAAPA,GAAsB,OAAPA,GAAsB,OAAPA,EAC9C,MAAOA,EAETpV,KAGF,MAAO,OAqDT,WAME,IALA,GAAIqV,IAAiB,OAAQ,OAAQ,SACjCC,EAAM,GACNvV,EAAI8U,IAEJU,EAAS,eACNA,EAAOJ,KAAKpV,IACjBuV,GAAOvV,EACPwE,IACAxE,EAAI8U,KAG8B,IAAhCQ,EAAc/T,QAAQgU,GACxBN,EAAM1D,KAAK,IAAMgE,EAAM,KAGvBN,EAAM1D,KAAKgE,OAqBXN,EAAM1D,KAAKvR,GACXwE,KAIJ,MAAOyQ,GAAMQ,KAAK,KASpBtW,EAAQuW,mBAAqB,SAAU7N,GAIrC,MAAOA,GAAK8N,QAAQ,mBAAoB,SAAS3V,GAC/C,MAAO,OAAO,OAASA,EAAE4V,WAAW,GAAGC,SAAS,KAAK9K,OAAO,MAWhE5L,EAAQkF,SAAW,SAAkBsQ,OACX,KAAd,EACRD,EAAS/R,MAAMgS,GAGf9R,KAAKF,MAAMgS,IAUfxV,EAAQgE,OAAS,SAAgB2S,EAAGC,GAClC,IAAK,GAAItR,KAAQsR,GACXA,EAAEzP,eAAe7B,KACnBqR,EAAErR,GAAQsR,EAAEtR,GAGhB,OAAOqR,IAQT3W,EAAQoE,MAAQ,SAAgBuS,GAC9B,IAAK,GAAIrR,KAAQqR,GACXA,EAAExP,eAAe7B,UACZqR,GAAErR,EAGb,OAAOqR,IAQT3W,EAAQmK,KAAO,SAAe0M,GAC5B,MAAe,QAAXA,EACK,WAEM3Q,KAAX2Q,EACK,YAEJA,YAAkBC,SAA8B,gBAAXD,GACjC,SAEJA,YAAkBE,SAA8B,gBAAXF,GACjC,SAEJA,YAAkBG,UAA+B,iBAAXH,GAClC,UAEJA,YAAkBI,SAA8B,gBAAXJ,GACjC,SAEL7W,EAAQuF,QAAQsR,GACX,QAGF,SAQT,IAAIK,GAAa,kBACjBlX,GAAQmX,MAAQ,SAAgBzO,GAC9B,OAAuB,gBAARA,IAAoBA,YAAgBqO,UAC/CG,EAAWjB,KAAKvN,IAQtB1I,EAAQuF,QAAU,SAAU6P,GAC1B,MAA+C,mBAAxCpT,OAAOe,UAAU2T,SAAS/V,KAAKyU,IASxCpV,EAAQoX,gBAAkB,SAAyBC,GAEjD,MADWA,GAAKC,wBACJC,KAAOxH,OAAOyH,aAAe3K,SAAS4K,YAAc,GASlEzX,EAAQ0K,eAAiB,SAAwB2M,GAE/C,MADWA,GAAKC,wBACJ7M,IAAMsF,OAAO2H,aAAe7K,SAAS/B,WAAa,GAQhE9K,EAAQ2X,aAAe,SAAsBN,EAAMtK,GACjD,GAAI6K,GAAUP,EAAKtK,UAAU8K,MAAM,MACA,GAA/BD,EAAQxV,QAAQ2K,KAClB6K,EAAQxF,KAAKrF,GACbsK,EAAKtK,UAAY6K,EAAQtB,KAAK,OASlCtW,EAAQ8X,gBAAkB,SAAyBT,EAAMtK,GACvD,GAAI6K,GAAUP,EAAKtK,UAAU8K,MAAM,KAC/B3E,EAAQ0E,EAAQxV,QAAQ2K,IACd,GAAVmG,IACF0E,EAAQzC,OAAOjC,EAAO,GACtBmE,EAAKtK,UAAY6K,EAAQtB,KAAK,OASlCtW,EAAQ+X,gBAAkB,SAAyBC,GAEjD,IAAK,GADDlH,GAASkH,EAAWC,WACf5S,EAAI,EAAG6S,EAAOpH,EAAOxO,OAAQ+C,EAAI6S,EAAM7S,IAAK,CACnD,GAAI4E,GAAQ6G,EAAOzL,EAGf4E,GAAMkO,OAERlO,EAAMmO,gBAAgB,QAIxB,IAAIC,GAAapO,EAAMoO,UACvB,IAAIA,EACF,IAAK,GAAIC,GAAID,EAAW/V,OAAS,EAAGgW,GAAK,EAAGA,IAAK,CAC/C,GAAIC,GAAYF,EAAWC,IACC,IAAxBC,EAAUC,WACZvO,EAAMmO,gBAAgBG,EAAU1U,MAMtC7D,EAAQ+X,gBAAgB9N,KAW5BjK,EAAQyY,wBAA0B,SAAiCC,GACjE,GAAInN,GAAOtF,CACR4G,UAAS8L,cACVpN,EAAQsB,SAAS8L,cACjBpN,EAAMqN,mBAAmBF,GACzBnN,EAAMhD,UAAS,GACftC,EAAY8J,OAAOtE,eACnBxF,EAAU4S,kBACV5S,EAAU6S,SAASvN,KASvBvL,EAAQyR,sBAAwB,SAA+BiH,GAC7D,GAAKA,GAA6D,OAAnCA,EAAuB/M,SAAtD,CAIA,GAAIoN,GAAKxN,CACLwE,QAAOtE,cAAgBoB,SAAS8L,cAClCpN,EAAQsB,SAAS8L,cACjBpN,EAAMqN,mBAAmBF,GACzBK,EAAMhJ,OAAOtE,eACbsN,EAAIF,kBACJE,EAAID,SAASvN,MASjBvL,EAAQyL,aAAe,WACrB,GAAIsE,OAAOtE,aAAc,CACvB,GAAIsN,GAAMhJ,OAAOtE,cACjB,IAAIsN,EAAIC,YAAcD,EAAIE,WACxB,MAAOF,GAAIC,WAAW,GAG1B,MAAO,OAQThZ,EAAQqL,aAAe,SAAsBE,GAC3C,GAAIA,GACEwE,OAAOtE,aAAc,CACvB,GAAIsN,GAAMhJ,OAAOtE,cACjBsN,GAAIF,kBACJE,EAAID,SAASvN,KAcnBvL,EAAQ0L,mBAAqB,WAC3B,GAAIH,GAAQvL,EAAQyL,cAEpB,OAAIF,IAAS,eAAiBA,IAAS,aAAeA,IAClDA,EAAM2N,gBAAmB3N,EAAM2N,gBAAkB3N,EAAM4N,cAEvDC,YAAa7N,EAAM6N,YACnBC,UAAW9N,EAAM8N,UACjBrY,UAAWuK,EAAM2N,eAAerS,YAI7B,MAUT7G,EAAQwL,mBAAqB,SAA4B/D,GACvD,GAAIoF,SAAS8L,aAAe5I,OAAOtE,aAAc,CAE/C,GADgBsE,OAAOtE,eACT,CACZ,GAAIF,GAAQsB,SAAS8L,aAEhBlR,GAAOzG,UAAUsY,YACpB7R,EAAOzG,UAAU8G,YAAY+E,SAAS0M,eAAe,KAKvDhO,EAAMiO,SAAS/R,EAAOzG,UAAUsY,WAAY7R,EAAO2R,aACnD7N,EAAMkO,OAAOhS,EAAOzG,UAAUsY,WAAY7R,EAAO4R,WAEjDrZ,EAAQqL,aAAaE,MAW3BvL,EAAQ0Z,aAAe,SAAsBC,EAASC,GAiBpD,OAhBuB1T,IAAV0T,IAEXA,GACElR,KAAQ,GACRmR,MAAS,WACP,GAAInR,GAAOtI,KAAKsI,IAEhB,OADAtI,MAAKsI,KAAO,GACLA,GAETtF,IAAO,SAAUsF,GACftI,KAAKsI,KAAOA,KAMdiR,EAAQG,UACV,MAAOF,GAAOC,QAAUF,EAAQG,SAIlC,IAAIH,EAAQI,gBAAiB,CAI3B,IAAK,GAHD9B,GAAa0B,EAAQ1B,WACrB+B,EAAY,GAEP3U,EAAI,EAAG6S,EAAOD,EAAW3V,OAAQ+C,EAAI6S,EAAM7S,IAAK,CACvD,GAAI4E,GAAQgO,EAAW5S,EAEvB,IAAsB,OAAlB4E,EAAM0B,UAAuC,KAAlB1B,EAAM0B,SAAiB,CACpD,GAAIsO,GAAYhC,EAAW5S,EAAI,GAC3B6U,EAAWD,EAAYA,EAAUtO,aAAWzF,EAC5CgU,IAAwB,OAAZA,GAAiC,KAAZA,GAA+B,MAAZA,IACtDF,GAAa,KACbJ,EAAOC,SAETG,GAAaha,EAAQ0Z,aAAazP,EAAO2P,GACzCA,EAAOxW,IAAI,UAEc,MAAlB6G,EAAM0B,UACbqO,GAAaJ,EAAOC,QACpBD,EAAOxW,IAAI,OAGX4W,GAAaha,EAAQ0Z,aAAazP,EAAO2P,GAI7C,MAAOI,GAGP,MAAwB,KAApBL,EAAQhO,WAA4D,GAAzC3L,EAAQsB,6BAM9BsY,EAAOC,QAKX,IAST7Z,EAAQsB,2BAA6B,WACnC,IAAmB,GAAf6Y,EAAkB,CACpB,GAAIC,IAAM,CACV,IAAyB,+BAArBC,UAAUC,QACd,CACE,GAAIC,GAAKF,UAAUG,SAEA,OADT,GAAIvD,QAAO,8BACdwD,KAAKF,KACVH,EAAKM,WAAYzD,OAAO0D,KAI5BR,EAAaC,EAGf,MAAOD,IAOTna,EAAQ4a,UAAY,WAClB,OAAmD,GAA3CP,UAAUG,UAAUpY,QAAQ,WAQtC,IAAI+X,IAAc,CAWlBna,GAAQ6N,iBAAmB,SAA0B8L,EAAS5Q,EAAQ8R,EAAUC,GAC9E,GAAInB,EAAQ9L,iBASV,WARmB3H,KAAf4U,IACFA,GAAa,GAEA,eAAX/R,GAA2B/I,EAAQ4a,cACrC7R,EAAS,kBAGX4Q,EAAQ9L,iBAAiB9E,EAAQ8R,EAAUC,GACpCD,CACF,IAAIlB,EAAQoB,YAAa,CAE9B,GAAIC,GAAI,WACN,MAAOH,GAASla,KAAKgZ,EAAS5J,OAAOpD,OAGvC,OADAgN,GAAQoB,YAAY,KAAOhS,EAAQiS,GAC5BA,IAWXhb,EAAQoQ,oBAAsB,SAA6BuJ,EAAS5Q,EAAQ8R,EAAUC,GAChFnB,EAAQvJ,yBACSlK,KAAf4U,IACFA,GAAa,GAEA,eAAX/R,GAA2B/I,EAAQ4a,cACrC7R,EAAS,kBAGX4Q,EAAQvJ,oBAAoBrH,EAAQ8R,EAAUC,IACrCnB,EAAQsB,aAEjBtB,EAAQsB,YAAY,KAAOlS,EAAQ8R,IASvC7a,EAAQkb,UAAY,QAASA,GAAUC,GACrC,GAAI7V,GAAM8V,CAEV,IAAwB,IAApBD,EAAS7Y,OACX,QAIF,IAAIyT,GAAQoF,EAASpF,MAAM,WAC3B,IAAIA,EACFzQ,EAAOyQ,EAAM,GACbqF,EAAYD,EAASE,OAAO/V,EAAKhD,OAAS,OAEvC,CAAA,GAAoB,MAAhB6Y,EAAS,GAqBhB,KAAM,IAAIG,aAAY,uBAnBtB,IAAIzL,GAAMsL,EAAS/Y,QAAQ,IAC3B,KAAa,IAATyN,EACF,KAAM,IAAIyL,aAAY,+BAExB,IAAY,IAARzL,EACF,KAAM,IAAIyL,aAAY,yBAGxB,IAAI3T,GAAQwT,EAASI,UAAU,EAAG1L,EACjB,OAAblI,EAAM,KAGRA,EAAQ,IAAOA,EAAM4T,UAAU,EAAG5T,EAAMrF,OAAS,GAAK,KAGxDgD,EAAiB,MAAVqC,EAAgBA,EAAQjE,KAAKF,MAAMmE,GAC1CyT,EAAYD,EAASE,OAAOxL,EAAM,GAMpC,OAAQvK,GAAMsE,OAAOsR,EAAUE,KAQjCpb,EAAQuJ,mBAAqB,SAAUhI,GACrC,GAAsB,SAAlBA,EAAMia,SAAsBjL,MAAMhL,QAAQhE,EAAMqD,QAAS,CAC3D,GAAI6W,GAAQla,EAAMqD,MAClB,IAAI6W,EAAO,CAKT,GAJAA,EAAQA,EAAMnS,IAAI,SAAU3B,GAC1B,MAAOjE,MAAKC,UAAUgE,KAGpB8T,EAAMnZ,OAAS,EAAG,CACpB,GAAIoZ,IAAQ,KAAOD,EAAMnZ,OAAS,GAAK,YACvCmZ,GAAQA,EAAM7P,MAAM,EAAG,GACvB6P,EAAMrJ,KAAKsJ,GAEbna,EAAM2I,QAAU,8BAAgCuR,EAAMnF,KAAK,OAQ/D,MAJsB,yBAAlB/U,EAAMia,UACRja,EAAM2I,QAAU,wCAA0C3I,EAAMkG,OAAOkU,oBAGlEpa,GASTvB,EAAQ4b,WAAa,SAAU5R,EAAQC,EAAO4R,GAC5C,GAAIC,OAAqB5V,KAAX2V,EAAuBA,EAAS,CAC9C,OAAO5R,GAAMsN,KAASuE,GAAW9R,EAAOuN,MACjCtN,EAAM8R,MAASD,GAAW9R,EAAO+R,OACjC9R,EAAMQ,IAASqR,GAAW9R,EAAOS,KACjCR,EAAMY,OAASiR,GAAW9R,EAAOa,QAiB1C7K,EAAQoH,SAAW,SAAkB4U,EAAMC,EAAMC,GAC/C,GAAIC,EACJ,OAAO,YACL,GAAIC,GAAUhc,KAAMic,EAAOha,UACvBia,EAAQ,WACVH,EAAU,KACLD,GAAWF,EAAKO,MAAMH,EAASC,IAElCG,EAAUN,IAAcC,CAC5B/Q,cAAa+Q,GACbA,EAAU1P,WAAW6P,EAAOL,GACxBO,GAASR,EAAKO,MAAMH,EAASC,KAYrCrc,EAAQyc,SAAW,SAAkBC,EAASC,GAM5C,IALA,GAAIC,GAAMD,EAAQra,OACdsN,EAAQ,EACRiN,EAASH,EAAQpa,OACjBwa,EAASH,EAAQra,OAEdqa,EAAQ/G,OAAOhG,KAAW8M,EAAQ9G,OAAOhG,IAC7CA,EAAQgN,GACThN,GAGF,MAAO+M,EAAQ/G,OAAOkH,EAAS,KAAOJ,EAAQ9G,OAAOiH,EAAS,IAC3DC,EAASlN,GAASiN,EAAS,GAC5BC,IACAD,GAGF,QAAQjN,MAAOA,EAAOC,IAAKiN,KAMxB,SAAS7c,EAAQD,EAASM,GAG/B,GAAIiV,GAAW,WACf,GAAIwH,IAAUC,MAAO,aACrBC,MACAC,UAAW3b,MAAQ,EAAE4b,WAAa,EAAEC,OAAS,EAAEC,WAAa,EAAEC,OAAS,EAAEC,gBAAkB,EAAEC,KAAO,EAAEC,mBAAqB,EAAEC,KAAO,GAAGC,MAAQ,GAAGC,SAAW,GAAGC,UAAY,GAAGC,IAAM,GAAGC,WAAa,GAAGC,UAAY,GAAGC,IAAI,GAAGC,IAAI,GAAGC,eAAiB,GAAGC,WAAa,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,gBAAkB,GAAGC,QAAU,EAAEC,KAAO,GAC7UC,YAAaC,EAAE,QAAQC,EAAE,SAASC,EAAE,SAASC,EAAE,OAAOC,GAAG,OAAOC,GAAG,QAAQC,GAAG,MAAMC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,KAC1HC,cAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAC5JC,cAAe,SAAmBC,EAAOC,EAAOC,EAAS7C,EAAG8C,EAAQC,EAAGC,GAEvE,GAAIC,GAAKF,EAAG1d,OAAS,CACrB,QAAQyd,GACR,IAAK,GACK3f,KAAK+f,EAAIP,EAAOpJ,QAAQ,YAAa,MACzBA,QAAQ,OAAO,MACfA,QAAQ,OAAO,MACfA,QAAQ,OAAO,MACfA,QAAQ,OAAO,MACfA,QAAQ,OAAO,MACfA,QAAQ,OAAO,KAErC,MACA,KAAK,GAAEpW,KAAK+f,EAAIrJ,OAAO8I,EACvB,MACA,KAAK,GAAExf,KAAK+f,EAAI,IAChB,MACA,KAAK,GAAE/f,KAAK+f,GAAI,CAChB,MACA,KAAK,GAAE/f,KAAK+f,GAAI,CAChB,MACA,KAAK,GAAE,MAAO/f,MAAK+f,EAAIH,EAAGE,EAAG,EAE7B,KAAK,IAAG9f,KAAK+f,IACb,MACA,KAAK,IAAG/f,KAAK+f,EAAIH,EAAGE,EAAG,EACvB,MACA,KAAK,IAAG9f,KAAK+f,GAAKH,EAAGE,EAAG,GAAIF,EAAGE,GAC/B,MACA,KAAK,IAAG9f,KAAK+f,KAAQ/f,KAAK+f,EAAEH,EAAGE,GAAI,IAAMF,EAAGE,GAAI,EAChD,MACA,KAAK,IAAG9f,KAAK+f,EAAIH,EAAGE,EAAG,GAAIF,EAAGE,EAAG,GAAGF,EAAGE,GAAI,IAAMF,EAAGE,GAAI,EACxD,MACA,KAAK,IAAG9f,KAAK+f,IACb,MACA,KAAK,IAAG/f,KAAK+f,EAAIH,EAAGE,EAAG,EACvB,MACA,KAAK,IAAG9f,KAAK+f,GAAKH,EAAGE,GACrB,MACA,KAAK,IAAG9f,KAAK+f,EAAIH,EAAGE,EAAG,GAAIF,EAAGE,EAAG,GAAG9N,KAAK4N,EAAGE,MAI5C1Y,QAAS4Y,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIsB,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,MAAMoB,GAAG,KAAKzB,IAAI,EAAE,MAAMA,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGC,IAAI,EAAE,GAAGC,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKW,EAAE,GAAGtB,GAAG,EAAE,IAAIO,IAAI,EAAE,IAAIwB,GAAG,GAAGC,GAAG,KAAKV,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIuB,GAAG,GAAGC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIsB,GAAG,KAAKH,GAAG,EAAE,KAAKzB,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMJ,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMD,IAAI,EAAE,MAAMH,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMW,EAAE,GAAGtB,GAAG,EAAE,IAAIgC,GAAG,KAAKV,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIuB,GAAG,GAAGC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,MAAML,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMW,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIuB,GAAG,GAAGC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,MAAMH,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMA,IAAI,EAAE,IAAIE,IAAI,EAAE,MACtwCuB,gBAAiBL,IAAI,EAAE,IACvBM,WAAY,SAAoBC,EAAKC,GACjC,KAAM,IAAIhgB,OAAM+f,IAEpB1d,MAAO,SAAe4E,GAgClB,QAASgZ,KACL,GAAIC,EAMJ,OALAA,GAAQC,EAAKC,MAAMH,OAAS,EAEP,gBAAVC,KACPA,EAAQC,EAAKpE,SAASmE,IAAUA,GAE7BA,EAtCX,GAAIC,GAAOlhB,KACPohB,GAAS,GACTC,GAAU,MACVC,KACAla,EAAQpH,KAAKoH,MACboY,EAAS,GACTE,EAAW,EACXD,EAAS,EACT8B,EAAa,EACbC,EAAS,CAKbxhB,MAAKmhB,MAAMM,SAASzZ,GACpBhI,KAAKmhB,MAAMtE,GAAK7c,KAAK6c,GACrB7c,KAAK6c,GAAGsE,MAAQnhB,KAAKmhB,UACW,KAArBnhB,KAAKmhB,MAAMO,SAClB1hB,KAAKmhB,MAAMO,UACf,IAAIC,GAAQ3hB,KAAKmhB,MAAMO,MACvBJ,GAAOtP,KAAK2P,GAEsB,kBAAvB3hB,MAAK6c,GAAGgE,aACf7gB,KAAK6gB,WAAa7gB,KAAK6c,GAAGgE,WAmB9B,KADA,GAAIe,GAAQC,EAAgBC,EAAOnZ,EAAWoZ,EAAYrhB,EAAE8b,EAAIwF,EAAUC,EAAzBC,OACpC,CAgBT,GAdAJ,EAAQV,EAAMA,EAAMlf,OAAO,GAGvBlC,KAAK4gB,eAAekB,GACpBnZ,EAAS3I,KAAK4gB,eAAekB,IAEf,MAAVF,IACAA,EAASZ,KAEbrY,EAASvB,EAAM0a,IAAU1a,EAAM0a,GAAOF,QAKpB,KAAXjZ,IAA2BA,EAAOzG,SAAWyG,EAAO,GAAI,CAE/D,IAAK4Y,EAAY,CAEbU,IACA,KAAKvhB,IAAK0G,GAAM0a,GAAY9hB,KAAKwe,WAAW9d,IAAMA,EAAI,GAClDuhB,EAASjQ,KAAK,IAAIhS,KAAKwe,WAAW9d,GAAG,IAEzC,IAAIyhB,GAAS,EAETA,GADAniB,KAAKmhB,MAAMiB,aACF,wBAAwB1C,EAAS,GAAG,MAAM1f,KAAKmhB,MAAMiB,eAAe,eAAeH,EAAS/L,KAAK,MAAQ,UAAYlW,KAAKwe,WAAWoD,GAAS,IAE9I,wBAAwBlC,EAAS,GAAG,iBACpB,GAAVkC,EAAsB,eACV,KAAK5hB,KAAKwe,WAAWoD,IAAWA,GAAQ,KAEvE5hB,KAAK6gB,WAAWsB,GACX7Z,KAAMtI,KAAKmhB,MAAMxL,MAAOsL,MAAOjhB,KAAKwe,WAAWoD,IAAWA,EAAQS,KAAMriB,KAAKmhB,MAAMzB,SAAU4C,IAAKX,EAAOM,SAAUA,IAI5H,GAAkB,GAAdV,EAAiB,CACjB,GAtEF,GAsEMK,EACA,KAAM,IAAI7gB,OAAMohB,GAAU,kBAI9B1C,GAASzf,KAAKmhB,MAAM1B,OACpBD,EAASxf,KAAKmhB,MAAM3B,OACpBE,EAAW1f,KAAKmhB,MAAMzB,SACtBiC,EAAQ3hB,KAAKmhB,MAAMO,OACnBE,EAASZ,IAIb,OAAU,CAEN,GAAKQ,EAAOlL,YAAelP,GAAM0a,GAC7B,KAEJ,IAAa,GAATA,EACA,KAAM,IAAI/gB,OAAMohB,GAAU,oBA1E1C,SAAmBI,GACfnB,EAAMlf,OAASkf,EAAMlf,OAAS,EAAEqgB,EAChClB,EAAOnf,OAASmf,EAAOnf,OAASqgB,EAChCjB,EAAOpf,OAASof,EAAOpf,OAASqgB,GAyEf,GACTT,EAAQV,EAAMA,EAAMlf,OAAO,GAG/B2f,EAAiBD,EACjBA,EAASJ,EACTM,EAAQV,EAAMA,EAAMlf,OAAO,GAC3ByG,EAASvB,EAAM0a,IAAU1a,EAAM0a,GAAON,GACtCD,EAAa,EAIjB,GAAI5Y,EAAO,YAAcwH,QAASxH,EAAOzG,OAAS,EAC9C,KAAM,IAAInB,OAAM,oDAAoD+gB,EAAM,YAAYF,EAG1F,QAAQjZ,EAAO,IAEX,IAAK,GAGDyY,EAAMpP,KAAK4P,GACXP,EAAOrP,KAAKhS,KAAKmhB,MAAM3B,QACvB8B,EAAOtP,KAAKhS,KAAKmhB,MAAMO,QACvBN,EAAMpP,KAAKrJ,EAAO,IAClBiZ,EAAS,KACJC,GAQDD,EAASC,EACTA,EAAiB,OARjBpC,EAASzf,KAAKmhB,MAAM1B,OACpBD,EAASxf,KAAKmhB,MAAM3B,OACpBE,EAAW1f,KAAKmhB,MAAMzB,SACtBiC,EAAQ3hB,KAAKmhB,MAAMO,OACfH,EAAa,GACbA,IAKR,MAEJ,KAAK,GAgBD,GAbA/E,EAAMxc,KAAKsf,aAAa3W,EAAO,IAAI,GAGnCuZ,EAAMnC,EAAIsB,EAAOA,EAAOnf,OAAOsa,GAE/B0F,EAAMrC,IACF2C,WAAYlB,EAAOA,EAAOpf,QAAQsa,GAAK,IAAIgG,WAC3CC,UAAWnB,EAAOA,EAAOpf,OAAO,GAAGugB,UACnCC,aAAcpB,EAAOA,EAAOpf,QAAQsa,GAAK,IAAIkG,aAC7CC,YAAarB,EAAOA,EAAOpf,OAAO,GAAGygB,iBAIxB,MAFjBZ,EAAI/hB,KAAKuf,cAAchf,KAAK2hB,EAAO1C,EAAQC,EAAQC,EAAU1f,KAAK6c,GAAIlU,EAAO,GAAI0Y,EAAQC,IAGrF,MAAOS,EAIPvF,KACA4E,EAAQA,EAAM5V,MAAM,GAAG,EAAEgR,EAAI,GAC7B6E,EAASA,EAAO7V,MAAM,GAAI,EAAEgR,GAC5B8E,EAASA,EAAO9V,MAAM,GAAI,EAAEgR,IAGhC4E,EAAMpP,KAAKhS,KAAKsf,aAAa3W,EAAO,IAAI,IACxC0Y,EAAOrP,KAAKkQ,EAAMnC,GAClBuB,EAAOtP,KAAKkQ,EAAMrC,IAElBmC,EAAW5a,EAAMga,EAAMA,EAAMlf,OAAO,IAAIkf,EAAMA,EAAMlf,OAAO,IAC3Dkf,EAAMpP,KAAKgQ,EACX,MAEJ,KAAK,GACD,OAAO,GAKnB,OAAO,IAGPb,EAAQ,WACZ,GAAIA,IAAUzD,IAAI,EAClBmD,WAAW,SAAoBC,EAAKC,GAC5B,IAAI/gB,KAAK6c,GAAGgE,WAGR,KAAM,IAAI9f,OAAM+f,EAFhB9gB,MAAK6c,GAAGgE,WAAWC,EAAKC,IAKpCU,SAAS,SAAUzZ,GAOX,MANAhI,MAAK4iB,OAAS5a,EACdhI,KAAK6iB,MAAQ7iB,KAAK8iB,MAAQ9iB,KAAK+iB,MAAO,EACtC/iB,KAAK0f,SAAW1f,KAAKyf,OAAS,EAC9Bzf,KAAKwf,OAASxf,KAAKgjB,QAAUhjB,KAAK2V,MAAQ,GAC1C3V,KAAKijB,gBAAkB,WACvBjjB,KAAK0hB,QAAUc,WAAW,EAAEE,aAAa,EAAED,UAAU,EAAEE,YAAY,GAC5D3iB,MAEfgI,MAAM,WACE,GAAIkb,GAAKljB,KAAK4iB,OAAO,EAQrB,OAPA5iB,MAAKwf,QAAQ0D,EACbljB,KAAKyf,SACLzf,KAAK2V,OAAOuN,EACZljB,KAAKgjB,SAASE,EACFA,EAAGvN,MAAM,OACV3V,KAAK0f,WAChB1f,KAAK4iB,OAAS5iB,KAAK4iB,OAAOpX,MAAM,GACzB0X,GAEfC,MAAM,SAAUD,GAER,MADAljB,MAAK4iB,OAASM,EAAKljB,KAAK4iB,OACjB5iB,MAEfsb,KAAK,WAEG,MADAtb,MAAK6iB,OAAQ,EACN7iB,MAEfojB,KAAK,SAAUb,GACPviB,KAAK4iB,OAAS5iB,KAAK2V,MAAMnK,MAAM+W,GAAKviB,KAAK4iB,QAEjDS,UAAU,WACF,GAAIC,GAAOtjB,KAAKgjB,QAAQ/H,OAAO,EAAGjb,KAAKgjB,QAAQ9gB,OAASlC,KAAK2V,MAAMzT,OACnE,QAAQohB,EAAKphB,OAAS,GAAK,MAAM,IAAMohB,EAAKrI,QAAQ,IAAI7E,QAAQ,MAAO,KAE/EmN,cAAc,WACN,GAAIhS,GAAOvR,KAAK2V,KAIhB,OAHIpE,GAAKrP,OAAS,KACdqP,GAAQvR,KAAK4iB,OAAO3H,OAAO,EAAG,GAAG1J,EAAKrP,UAElCqP,EAAK0J,OAAO,EAAE,KAAK1J,EAAKrP,OAAS,GAAK,MAAM,KAAKkU,QAAQ,MAAO,KAEhFgM,aAAa,WACL,GAAIoB,GAAMxjB,KAAKqjB,YACX5iB,EAAI,GAAI0P,OAAMqT,EAAIthB,OAAS,GAAGgU,KAAK,IACvC,OAAOsN,GAAMxjB,KAAKujB,gBAAkB,KAAO9iB,EAAE,KAErD8Q,KAAK,WACG,GAAIvR,KAAK+iB,KACL,MAAO/iB,MAAK0d,GAEX1d,MAAK4iB,SAAQ5iB,KAAK+iB,MAAO,EAE9B,IAAI9B,GACAtL,EACA8N,EACA3Q,EAEA4Q,CACC1jB,MAAK6iB,QACN7iB,KAAKwf,OAAS,GACdxf,KAAK2V,MAAQ,GAGjB,KAAK,GADDgO,GAAQ3jB,KAAK4jB,gBACR3e,EAAE,EAAEA,EAAI0e,EAAMzhB,WACnBuhB,EAAYzjB,KAAK4iB,OAAOjN,MAAM3V,KAAK2jB,MAAMA,EAAM1e,OAC5B0Q,KAAS8N,EAAU,GAAGvhB,OAASyT,EAAM,GAAGzT,UACvDyT,EAAQ8N,EACR3Q,EAAQ7N,EACHjF,KAAKa,QAAQgjB,OALK5e,KAQ/B,MAAI0Q,IACA+N,EAAQ/N,EAAM,GAAGA,MAAM,SACnB+N,IAAO1jB,KAAK0f,UAAYgE,EAAMxhB,QAClClC,KAAK0hB,QAAUc,WAAYxiB,KAAK0hB,OAAOe,UACxBA,UAAWziB,KAAK0f,SAAS,EACzBgD,aAAc1iB,KAAK0hB,OAAOiB,YAC1BA,YAAae,EAAQA,EAAMA,EAAMxhB,OAAO,GAAGA,OAAO,EAAIlC,KAAK0hB,OAAOiB,YAAchN,EAAM,GAAGzT,QACxGlC,KAAKwf,QAAU7J,EAAM,GACrB3V,KAAK2V,OAASA,EAAM,GACpB3V,KAAKyf,OAASzf,KAAKwf,OAAOtd,OAC1BlC,KAAK6iB,OAAQ,EACb7iB,KAAK4iB,OAAS5iB,KAAK4iB,OAAOpX,MAAMmK,EAAM,GAAGzT,QACzClC,KAAKgjB,SAAWrN,EAAM,GACtBsL,EAAQjhB,KAAKuf,cAAchf,KAAKP,KAAMA,KAAK6c,GAAI7c,KAAM2jB,EAAM7Q,GAAO9S,KAAKijB,eAAejjB,KAAKijB,eAAe/gB,OAAO,IAC7GlC,KAAK+iB,MAAQ/iB,KAAK4iB,SAAQ5iB,KAAK+iB,MAAO,GACtC9B,OACC,IAEW,KAAhBjhB,KAAK4iB,OACE5iB,KAAK0d,QAEZ1d,MAAK6gB,WAAW,0BAA0B7gB,KAAK0f,SAAS,GAAG,yBAAyB1f,KAAKoiB,gBAChF9Z,KAAM,GAAI2Y,MAAO,KAAMoB,KAAMriB,KAAK0f,YAGvDsB,IAAI,WACI,GAAIe,GAAI/hB,KAAKuR,MACb,YAAiB,KAANwQ,EACAA,EAEA/hB,KAAKghB,OAGxB8C,MAAM,SAAeC,GACb/jB,KAAKijB,eAAejR,KAAK+R,IAEjCC,SAAS,WACD,MAAOhkB,MAAKijB,eAAegB,OAEnCL,cAAc,WACN,MAAO5jB,MAAKkkB,WAAWlkB,KAAKijB,eAAejjB,KAAKijB,eAAe/gB,OAAO,IAAIyhB,OAElFQ,SAAS,WACD,MAAOnkB,MAAKijB,eAAejjB,KAAKijB,eAAe/gB,OAAO,IAE9DkiB,UAAU,SAAeL,GACjB/jB,KAAK8jB,MAAMC,IA0CnB,OAxCA5C,GAAMtgB,WACNsgB,EAAM5B,cAAgB,SAAmB1C,EAAGwH,EAAIC,EAA0BC,GAG1E,OAAOD,GACP,IAAK,GACL,KACA,KAAK,GAAE,MAAO,EAEd,KAAK,GAAkD,MAAhDD,GAAI7E,OAAS6E,EAAI7E,OAAOvE,OAAO,EAAEoJ,EAAI5E,OAAO,GAAW,CAE9D,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,IAAG,MAAO,GAEf,KAAK,IAAG,MAAO,EAEf,KAAK,IAAG,MAAO,GAEf,KAAK,IAAG,MAAO,YAIf0B,EAAMwC,OAAS,WAAW,8DAA8D,sEAAqE,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,cAAc,eAAe,cAAc,SAAS,UAC3QxC,EAAM+C,YAAcM,SAAWb,OAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAIc,WAAY,IAI9EtD,IAEP,OADAxE,GAAOwE,MAAQA,EACRxE,IAGL/c,GAAQ+c,OAASxH,EACjBvV,EAAQwD,MAAQ+R,EAAS/R,MAAM6D,KAAKkO,IAKjC,SAAStV,EAAQD,GAEtB,YASA,SAAS2F,GAAWoG,EAAQ/K,GAC1B,GAAIgG,GAAY5G,IAEhBA,MAAK2L,OAASA,EACd3L,KAAK+b,YAAUjW,GACf9F,KAAK0kB,MAAQ,IACb1kB,KAAK2kB,aAAW7e,GAEhB9F,KAAK2F,OACL3F,KAAK2F,IAAI/E,UAAYA,CAErB,IAAIwG,GAAQqF,SAASC,cAAc,QACnC1M,MAAK2F,IAAIyB,MAAQA,EACjBA,EAAMuF,UAAY,oBAClB/L,EAAU8G,YAAYN,EACtB,IAAIgB,GAAQqE,SAASC,cAAc,QACnC1M,MAAK2F,IAAIyC,MAAQA,EACjBhB,EAAMM,YAAYU,EAClB,IAAIwc,GAAKnY,SAASC,cAAc,KAChCtE,GAAMV,YAAYkd,EAElB,IAAIC,GAAKpY,SAASC,cAAc,KAChCkY,GAAGld,YAAYmd,EACf,IAAItc,GAAUkE,SAASC,cAAc,MACrC1M,MAAK2F,IAAI4C,QAAUA,EACnBA,EAAQoE,UAAY,qBACpBkY,EAAGnd,YAAYa,GAEfsc,EAAKpY,SAASC,cAAc,MAC5BkY,EAAGld,YAAYmd,EACf,IAAIC,GAAWrY,SAASC,cAAc,MACtC1M,MAAK2F,IAAIqC,MAAQ8c,EACjBA,EAASnY,UAAY,mBACrBmY,EAASlX,MAAQ,2BACjBiX,EAAGnd,YAAYod,EAGf,IAAIC,GAAatY,SAASC,cAAc,QACxCoY,GAASpd,YAAYqd,EACrB,IAAIC,GAAcvY,SAASC,cAAc,QACzCqY,GAAWrd,YAAYsd,GACvBJ,EAAKnY,SAASC,cAAc,MAC5BsY,EAAYtd,YAAYkd,EAExB,IAAIK,GAAgBxY,SAASC,cAAc,SAC3CuY,GAAclb,KAAO,SACrBkb,EAActY,UAAY,qBAC1BkY,EAAKpY,SAASC,cAAc,MAC5BmY,EAAGnd,YAAYud,GACfL,EAAGld,YAAYmd,EAEf,IAAI/d,GAAS2F,SAASC,cAAc,QAEpC1M,MAAK2F,IAAImB,OAASA,EAClBA,EAAOiG,QAAU,SAAUR,GACzB3F,EAAUse,iBAAiB3Y,IAE7BzF,EAAOkG,SAAW,SAAUT,GAC1B3F,EAAUue,aAEZre,EAAOmG,UAAY,SAAUV,GAC3B3F,EAAUwH,WAAW7B,IAEvBzF,EAAOoG,QAAU,SAAUX,GACzB3F,EAAUwe,SAAS7Y,IAErB0Y,EAAcrY,QAAU,SAAUL,GAChCzF,EAAOoE,UAIT2Z,EAAKpY,SAASC,cAAc,MAC5BmY,EAAGnd,YAAYZ,GACf8d,EAAGld,YAAYmd,EAEf,IAAIQ,GAAa5Y,SAASC,cAAc,SACxC2Y,GAAWtb,KAAO,SAClBsb,EAAWzX,MAAQ,sBACnByX,EAAW1Y,UAAY,kBACvB0Y,EAAWzY,QAAU,WACnBhG,EAAU2K,QAEZsT,EAAKpY,SAASC,cAAc,MAC5BmY,EAAGnd,YAAY2d,GACfT,EAAGld,YAAYmd,EAEf,IAAIS,GAAiB7Y,SAASC,cAAc,SAC5C4Y,GAAevb,KAAO,SACtBub,EAAe1X,MAAQ,gCACvB0X,EAAe3Y,UAAY,sBAC3B2Y,EAAe1Y,QAAU,WACvBhG,EAAU0K,YAEZuT,EAAKpY,SAASC,cAAc,MAC5BmY,EAAGnd,YAAY4d,GACfV,EAAGld,YAAYmd,GAQjBtf,EAAU5C,UAAU4O,KAAO,SAASxJ,GAClC,OAAoBjC,IAAhB9F,KAAKuI,QAAsB,CAC7B,GAAIuK,OAA6BhN,IAApB9F,KAAKulB,YAA4BvlB,KAAKulB,YAAc,EAAI,CACjEzS,GAAQ9S,KAAKuI,QAAQrG,OAAS,IAChC4Q,EAAQ,GAEV9S,KAAKwlB,iBAAiB1S,EAAO/K,KASjCxC,EAAU5C,UAAU2O,SAAW,SAASvJ,GACtC,OAAoBjC,IAAhB9F,KAAKuI,QAAsB,CAC7B,GAAI0D,GAAMjM,KAAKuI,QAAQrG,OAAS,EAC5B4Q,MAA6BhN,IAApB9F,KAAKulB,YAA4BvlB,KAAKulB,YAAc,EAAItZ,CACjE6G,GAAQ,IACVA,EAAQ7G,GAEVjM,KAAKwlB,iBAAiB1S,EAAO/K,KAWjCxC,EAAU5C,UAAU6iB,iBAAmB,SAAS1S,EAAO/K,GAErD,GAAI/H,KAAKylB,aAAc,CACrB,GAAIC,GAAW1lB,KAAKylB,aAAavf,IAEjB,UADDlG,KAAKylB,aAAaxO,WAExByO,GAASC,wBAGTD,GAASE,kBAElBF,EAAS1b,YAGX,IAAKhK,KAAKuI,UAAYvI,KAAKuI,QAAQuK,GAIjC,MAFA9S,MAAKulB,gBAAczf,QACnB9F,KAAKylB,iBAAe3f,GAItB9F,MAAKulB,YAAczS,CAGnB,IAAI5M,GAAOlG,KAAKuI,QAAQvI,KAAKulB,aAAarf,KACtC+Q,EAAOjX,KAAKuI,QAAQvI,KAAKulB,aAAatO,IAC9B,UAARA,EACF/Q,EAAKyf,mBAAoB,EAGzBzf,EAAK0f,mBAAoB,EAE3B5lB,KAAKylB,aAAezlB,KAAKuI,QAAQvI,KAAKulB,aACtCrf,EAAK8D,YAGL9D,EAAKuF,SAAS,WACR1D,GACF7B,EAAK6B,MAAMkP,MASjB1R,EAAU5C,UAAUkjB,YAAc,eACZ/f,IAAhB9F,KAAK+b,UACP/Q,aAAahL,KAAK+b,eACX/b,MAAK+b,UAUhBxW,EAAU5C,UAAUuiB,iBAAmB,SAAU3Y,GAG/CvM,KAAK6lB,aACL,IAAIjf,GAAY5G,IAChBA,MAAK+b,QAAU1P,WAAW,SAAUE,GAClC3F,EAAUue,aAEZnlB,KAAK0kB,QAUPnf,EAAU5C,UAAUwiB,UAAY,SAAUW,GACxC9lB,KAAK6lB,aAEL,IAAIte,GAAQvH,KAAK2F,IAAImB,OAAOS,MACxBe,EAAQf,EAAMrF,OAAS,EAAKqF,MAAQzB,EACxC,IAAIwC,GAAQtI,KAAK2kB,UAAYmB,EAO3B,GALA9lB,KAAK2kB,SAAWrc,EAChBtI,KAAKuI,QAAUvI,KAAK2L,OAAO7E,OAAOwB,GAClCtI,KAAKwlB,qBAAiB1f,QAGVA,IAARwC,EAAmB,CACrB,GAAIyd,GAAc/lB,KAAKuI,QAAQrG,MAC/B,QAAQ6jB,GACN,IAAK,GAAG/lB,KAAK2F,IAAI4C,QAAQyd,UAAY,iBAAmB,MACxD,KAAK,GAAGhmB,KAAK2F,IAAI4C,QAAQyd,UAAY,eAAiB,MACtD,SAAShmB,KAAK2F,IAAI4C,QAAQyd,UAAYD,EAAc,qBAItD/lB,MAAK2F,IAAI4C,QAAQyd,UAAY,IAUnCzgB,EAAU5C,UAAUyL,WAAa,SAAU7B,GACzC,GAAIwE,GAASxE,EAAMyE,KACL,KAAVD,GACF/Q,KAAK2F,IAAImB,OAAOS,MAAQ,GACxBvH,KAAKmlB,YACL5Y,EAAMO,iBACNP,EAAMiF,mBAEW,IAAVT,IACHxE,EAAM2E,QAERlR,KAAKmlB,WAAU,GAER5Y,EAAM4E,SAEbnR,KAAKsR,WAILtR,KAAKuR,OAEPhF,EAAMO,iBACNP,EAAMiF,oBASVjM,EAAU5C,UAAUyiB,SAAW,SAAU7Y,GACvC,GAAIwE,GAASxE,EAAM0E,OACL,KAAVF,GAA0B,IAAVA,GAClB/Q,KAAKklB,iBAAiB3Y,IAO1BhH,EAAU5C,UAAUqB,MAAQ,WAC1BhE,KAAK2F,IAAImB,OAAOS,MAAQ,GACxBvH,KAAKmlB,aAMP5f,EAAU5C,UAAUI,QAAU,WAC5B/C,KAAK2L,OAAS,KACd3L,KAAK2F,IAAI/E,UAAU8F,YAAY1G,KAAK2F,IAAIyB,OACxCpH,KAAK2F,IAAM,KAEX3F,KAAKuI,QAAU,KACfvI,KAAKylB,aAAe,KAEpBzlB,KAAK6lB,eAIPhmB,EAAOD,QAAU2F,GAKZ,SAAS1F,EAAQD,EAASM,GAE/B,YAaA,SAASsF,GAAauM,EAAOlR,GAuC3B,QAASolB,GAAiBC,EAAMC,EAAUpU,GACxCA,EAAMjQ,QAAQ,SAAUskB,GACtB,GAAiB,aAAbA,EAAKrc,KAAqB,CAE5B,GAAIsc,GAAY5Z,SAASC,cAAc,MACvC2Z,GAAU1Z,UAAY,uBACtB2Z,EAAK7Z,SAASC,cAAc,MAC5B4Z,EAAG5e,YAAY2e,GACfH,EAAKxe,YAAY4e,OAEd,CACH,GAAIC,MAGAD,EAAK7Z,SAASC,cAAc,KAChCwZ,GAAKxe,YAAY4e,EAGjB,IAAIE,GAAS/Z,SAASC,cAAc,SAiBpC,IAhBA8Z,EAAOzc,KAAO,SACdyc,EAAO7Z,UAAYyZ,EAAKzZ,UACxB4Z,EAAQC,OAASA,EACbJ,EAAKxY,QACP4Y,EAAO5Y,MAAQwY,EAAKxY,OAElBwY,EAAKnU,QACPuU,EAAO5Z,QAAU,SAAUL,GACzBA,EAAMO,iBACN1C,EAAGqc,OACHL,EAAKnU,UAGTqU,EAAG5e,YAAY8e,GAGXJ,EAAKM,QAAS,CAEhB,GAAIC,GAAUla,SAASC,cAAc,MACrCia,GAAQha,UAAY,kBACpB6Z,EAAO9e,YAAYif,GACnBH,EAAO9e,YAAY+E,SAAS0M,eAAeiN,EAAK9d,MAEhD,IAAIse,EACJ,IAAIR,EAAKnU,MAAO,CAEduU,EAAO7Z,WAAa,qBAEpB,IAAIka,GAAepa,SAASC,cAAc,SAC1Cma,GAAa9c,KAAO,SACpBwc,EAAQM,aAAeA,EACvBA,EAAala,UAAY,oBACzBka,EAAab,UAAY,wCACzBM,EAAG5e,YAAYmf,GACXT,EAAKU,eACPD,EAAajZ,MAAQwY,EAAKU,cAG5BF,EAAgBC,MAEb,CAEH,GAAIE,GAAYta,SAASC,cAAc,MACvCqa,GAAUpa,UAAY,oBACtB6Z,EAAO9e,YAAYqf,GAEnBH,EAAgBJ,EAIlBI,EAAcha,QAAU,SAAUL,GAChCA,EAAMO,iBACN1C,EAAG4c,cAAcT,GACjBK,EAAc7e,QAIhB,IAAIkf,KACJV,GAAQW,SAAWD,CACnB,IAAIE,GAAK1a,SAASC,cAAc,KAChC6Z,GAAQY,GAAKA,EACbA,EAAGxa,UAAY,kBACfwa,EAAGpP,MAAMxN,OAAS,IAClB+b,EAAG5e,YAAYyf,GACflB,EAAgBkB,EAAIF,EAAab,EAAKM,aAItCF,GAAOR,UAAY,sCAAwCI,EAAK9d,IAGlE6d,GAASnU,KAAKuU,MAhIpBvmB,KAAK2F,MAEL,IAAIyE,GAAKpK,KACL2F,EAAM3F,KAAK2F,GACf3F,MAAK6R,WAAS/L,GACd9F,KAAK+R,MAAQA,EACb/R,KAAKonB,kBACLpnB,KAAK6F,cAAYC,GACjB9F,KAAK8R,QAAUjR,EAAUA,EAAQuR,UAAQtM,EAGzC,IAAIpG,GAAO+M,SAASC,cAAc,MAClChN,GAAKiN,UAAY,8BACjBhH,EAAIjG,KAAOA,CAGX,IAAIwI,GAAOuE,SAASC,cAAc,MAClCxE,GAAKyE,UAAY,yBACjBhH,EAAIuC,KAAOA,EACXxI,EAAKgI,YAAYQ,EAGjB,IAAIge,GAAOzZ,SAASC,cAAc,KAClCwZ,GAAKvZ,UAAY,kBACjBzE,EAAKR,YAAYwe,GACjBvgB,EAAIugB,KAAOA,EACXvgB,EAAIoM,QAGJ,IAAIsV,GAAc5a,SAASC,cAAc,SACzC2a,GAAYtd,KAAO,SACnBpE,EAAI0hB,YAAcA,CAClB,IAAIf,GAAK7Z,SAASC,cAAc,KAChC4Z,GAAGvO,MAAMuP,SAAW,SACpBhB,EAAGvO,MAAMxN,OAAS,IAClB+b,EAAG5e,YAAY2f,GACfnB,EAAKxe,YAAY4e,GAgGjBL,EAAgBC,EAAMlmB,KAAK2F,IAAIoM,MAAOA,GAKtC/R,KAAKunB,UAAY,EACjBxV,EAAMjQ,QAAQ,SAAUskB,GACtB,GAAI7b,GAAqE,IAA3DwH,EAAM7P,QAAUkkB,EAAKM,QAAUN,EAAKM,QAAQxkB,OAAS,GACnEkI,GAAGmd,UAAYxb,KAAKE,IAAI7B,EAAGmd,UAAWhd,KAxJ1C,GAAItJ,GAAOf,EAAoB,EAiK/BsF,GAAY7C,UAAU6kB,mBAAqB,WACzC,GAAIC,MACArd,EAAKpK,IAiBT,OAhBAA,MAAK2F,IAAIoM,MAAMjQ,QAAQ,SAAUskB,GAC/BqB,EAAQzV,KAAKoU,EAAKI,QACdJ,EAAKS,cACPY,EAAQzV,KAAKoU,EAAKS,cAEhBT,EAAKc,UAAYd,GAAQhc,EAAGsd,cAC9BtB,EAAKc,SAASplB,QAAQ,SAAU6lB,GAC9BF,EAAQzV,KAAK2V,EAAQnB,QACjBmB,EAAQd,cACVY,EAAQzV,KAAK2V,EAAQd,kBAOtBY,GAITjiB,EAAYoiB,gBAAc9hB,GAQ1BN,EAAY7C,UAAU0P,KAAO,SAAUR,EAAQgW,GAC7C7nB,KAAKymB,MAGL,IAAIqB,IAAY,CAChB,IAAID,EAAe,CACjB,GAAIE,GAAalW,EAAOqF,wBACpB8Q,EAAcH,EAAc3Q,uBAE5B6Q,GAAWtd,OAASzK,KAAKunB,UAAYS,EAAYvd,QAG5Csd,EAAW1d,IAAMrK,KAAKunB,UAAYS,EAAY3d,MAErDyd,GAAY,GAQhB,GAAIA,EAAW,CAEb,GAAIG,GAAepW,EAAOqW,YAC1BloB,MAAK2F,IAAIuC,KAAK6P,MAAMZ,KAAO,MAC3BnX,KAAK2F,IAAIuC,KAAK6P,MAAM1N,IAAM4d,EAAe,KACzCjoB,KAAK2F,IAAIuC,KAAK6P,MAAMtN,OAAS,OAI7BzK,MAAK2F,IAAIuC,KAAK6P,MAAMZ,KAAO,MAC3BnX,KAAK2F,IAAIuC,KAAK6P,MAAM1N,IAAM,GAC1BrK,KAAK2F,IAAIuC,KAAK6P,MAAMtN,OAAS,KAI/B,IAAIb,GAASiI,EAAOpL,UACpBmD,GAAO8J,aAAa1T,KAAK2F,IAAIjG,KAAMkK,EAAOsP,WAG1C,IAAI9O,GAAKpK,KACLkmB,EAAOlmB,KAAK2F,IAAIugB,IACpBlmB,MAAKonB,eAAee,UAAYlnB,EAAKwM,iBAAiBkC,OAAQ,YAAa,SAAUpD,GAEnF,GAAIM,GAASN,EAAMM,MACdA,IAAUqZ,GAAU9b,EAAGge,WAAWvb,EAAQqZ,KAC7C9b,EAAGqc,OACHla,EAAMiF,kBACNjF,EAAMO,oBAGV9M,KAAKonB,eAAeiB,QAAUpnB,EAAKwM,iBAAiBkC,OAAQ,UAAW,SAAUpD,GAC/EnC,EAAGgE,WAAW7B,KAIhBvM,KAAK6F,UAAY5E,EAAKoK,eACtBrL,KAAK6R,OAASA,EACdxF,WAAW,WACTjC,EAAGzE,IAAI0hB,YAAYtf,SAClB,GAECvC,EAAYoiB,aACdpiB,EAAYoiB,YAAYnB,OAE1BjhB,EAAYoiB,YAAc5nB,MAM5BwF,EAAY7C,UAAU8jB,KAAO,WAEvBzmB,KAAK2F,IAAIjG,KAAK+G,aAChBzG,KAAK2F,IAAIjG,KAAK+G,WAAWC,YAAY1G,KAAK2F,IAAIjG,MAC1CM,KAAK8R,SACP9R,KAAK8R,UAMT,KAAK,GAAIrO,KAAQzD,MAAKonB,eACpB,GAAIpnB,KAAKonB,eAAergB,eAAetD,GAAO,CAC5C,GAAI6kB,GAAKtoB,KAAKonB,eAAe3jB,EACzB6kB,IACFrnB,EAAK+O,oBAAoBL,OAAQlM,EAAM6kB,SAElCtoB,MAAKonB,eAAe3jB,GAI3B+B,EAAYoiB,aAAe5nB,OAC7BwF,EAAYoiB,gBAAc9hB,KAU9BN,EAAY7C,UAAUqkB,cAAgB,SAAUT,GAC9C,GAAInc,GAAKpK,KACLuoB,EAAkBhC,GAAWvmB,KAAK0nB,aAGlCA,EAAe1nB,KAAK0nB,YAcxB,IAbIA,IAEFA,EAAaP,GAAGpP,MAAMxN,OAAS,IAC/Bmd,EAAaP,GAAGpP,MAAMyQ,QAAU,GAChCnc,WAAW,WACLjC,EAAGsd,cAAgBA,IACrBA,EAAaP,GAAGpP,MAAM0Q,QAAU,GAChCxnB,EAAKyW,gBAAgBgQ,EAAaP,GAAG1gB,WAAY,yBAElD,KACHzG,KAAK0nB,iBAAe5hB,KAGjByiB,EAAgB,CACnB,GAAIpB,GAAKZ,EAAQY,EACjBA,GAAGpP,MAAM0Q,QAAU,OACNtB,GAAG3c,YAChB6B,YAAW,WACT,GAAIjC,EAAGsd,cAAgBnB,EAAS,CAE9B,IAAK,GADDmC,GAAe,EACVzjB,EAAI,EAAGA,EAAIkiB,EAAGtP,WAAW3V,OAAQ+C,IACxCyjB,GAAgBvB,EAAGtP,WAAW5S,GAAGuF,YAEnC2c,GAAGpP,MAAMxN,OAASme,EAAe,KACjCvB,EAAGpP,MAAMyQ,QAAU,aAEpB,GACHvnB,EAAKsW,aAAa4P,EAAG1gB,WAAY,uBACjCzG,KAAK0nB,aAAenB,IASxB/gB,EAAY7C,UAAUyL,WAAa,SAAU7B,GAC3C,GAGIkb,GAASkB,EAAaC,EAAYC,EAHlChc,EAASN,EAAMM,OACfkE,EAASxE,EAAMyE,MACfI,GAAU,CAGA,KAAVL,GAIE/Q,KAAK6F,WACP5E,EAAKgK,aAAajL,KAAK6F,WAErB7F,KAAK6R,QACP7R,KAAK6R,OAAO9J,QAGd/H,KAAKymB,OAELrV,GAAU,GAEO,GAAVL,EACFxE,EAAM4E,UAUTsW,EAAUznB,KAAKwnB,qBAEI,IADnBmB,EAAclB,EAAQzlB,QAAQ6K,MAG5B4a,EAAQA,EAAQvlB,OAAS,GAAG6F,QAC5BqJ,GAAU,KAdZqW,EAAUznB,KAAKwnB,sBACfmB,EAAclB,EAAQzlB,QAAQ6K,KACX4a,EAAQvlB,OAAS,IAElCulB,EAAQ,GAAG1f,QACXqJ,GAAU,IAaG,IAAVL,GACiB,qBAApBlE,EAAOF,YACT8a,EAAUznB,KAAKwnB,qBACfmB,EAAclB,EAAQzlB,QAAQ6K,IAC9B+b,EAAanB,EAAQkB,EAAc,KAEjCC,EAAW7gB,SAGfqJ,GAAU,GAEO,IAAVL,GACP0W,EAAUznB,KAAKwnB,qBACfmB,EAAclB,EAAQzlB,QAAQ6K,GAC9B+b,EAAanB,EAAQkB,EAAc,GAC/BC,GAAsC,qBAAxBA,EAAWjc,YAE3Bic,EAAanB,EAAQkB,EAAc,IAEhCC,IAEHA,EAAanB,EAAQA,EAAQvlB,OAAS,IAEpC0mB,GACFA,EAAW7gB,QAEbqJ,GAAU,GAEO,IAAVL,GACP0W,EAAUznB,KAAKwnB,qBACfmB,EAAclB,EAAQzlB,QAAQ6K,GAC9Bgc,EAAapB,EAAQkB,EAAc,GAC/BE,GAAsC,qBAAxBA,EAAWlc,WAC3Bkc,EAAW9gB,QAEbqJ,GAAU,GAEO,IAAVL,IACP0W,EAAUznB,KAAKwnB,qBACfmB,EAAclB,EAAQzlB,QAAQ6K,GAC9Bgc,EAAapB,EAAQkB,EAAc,GAC/BE,GAAsC,qBAAxBA,EAAWlc,YAE3Bkc,EAAapB,EAAQkB,EAAc,IAEhCE,IAEHA,EAAapB,EAAQ,IAEnBoB,IACFA,EAAW9gB,QACXqJ,GAAU,GAEZA,GAAU,GAIRA,IACF7E,EAAMiF,kBACNjF,EAAMO,mBAUVtH,EAAY7C,UAAUylB,WAAa,SAAUve,EAAOD,GAElD,IADA,GAAIvH,GAAIwH,EAAMpD,WACPpE,GAAG,CACR,GAAIA,GAAKuH,EACP,OAAO,CAETvH,GAAIA,EAAEoE,WAGR,OAAO,GAGT5G,EAAOD,QAAU4F,GAKZ,SAAS3F,EAAQD,EAASM,GAE/B,YAkBA,SAASuF,GAAMkG,EAAQtE,GAErBrH,KAAK2L,OAASA,EACd3L,KAAK2F,OACL3F,KAAK8oB,UAAW,EAEbzhB,GAAWA,YAAkBzF,SAC9B5B,KAAK+oB,SAAS1hB,EAAOC,MAAOD,EAAO2hB,eACnChpB,KAAKipB,SAAS5hB,EAAOE,MAAOF,EAAO0C,QAGnC/J,KAAK+oB,SAAS,IACd/oB,KAAKipB,SAAS,OAGhBjpB,KAAKkpB,wBAA0BjoB,EAAK+F,SAAShH,KAAKmpB,eAAeliB,KAAKjH,MAAOyF,EAAK9C,UAAUC,mBAC5F5C,KAAKopB,wBAA0BnoB,EAAK+F,SAAShH,KAAKqpB,eAAepiB,KAAKjH,MAAOyF,EAAK9C,UAAUC,mBAhC9F,GAAI0mB,GAAcppB,EAAoB,GAClCsF,EAActF,EAAoB,GAClCqpB,EAAoBrpB,EAAoB,IACxCe,EAAOf,EAAoB,EAiC/BuF,GAAK9C,UAAUC,kBAAoB,IAMnC6C,EAAK9C,UAAU6mB,mBAAqB,WAMlC,GALAxpB,KAAKyB,UACH6F,OAAO,EACPC,OAAO,GAGLvH,KAAK2L,SACP3L,KAAKyB,SAAS6F,MAAqC,SAA7BtH,KAAK2L,OAAO9K,QAAQgC,KAC1C7C,KAAKyB,SAAS8F,MAAqC,SAA7BvH,KAAK2L,OAAO9K,QAAQgC,MAER,SAA7B7C,KAAK2L,OAAO9K,QAAQgC,MAAgD,SAA7B7C,KAAK2L,OAAO9K,QAAQgC,OACjB,kBAAnC7C,MAAK2L,OAAO9K,QAAQa,YAA4B,CAC1D,GAAID,GAAWzB,KAAK2L,OAAO9K,QAAQa,YACjC4F,MAAOtH,KAAKsH,MACZC,MAAOvH,KAAKuH,MACZkiB,KAAMzpB,KAAK0pB,WAGW,kBAAbjoB,IACTzB,KAAKyB,SAAS6F,MAAQ7F,EACtBzB,KAAKyB,SAAS8F,MAAQ9F,IAGQ,iBAAnBA,GAAS6F,QAAqBtH,KAAKyB,SAAS6F,MAAQ7F,EAAS6F,OAC1C,iBAAnB7F,GAAS8F,QAAqBvH,KAAKyB,SAAS8F,MAAQ9F,EAAS8F,UAUhF9B,EAAK9C,UAAU+mB,QAAU,WAGvB,IAFA,GAAIxjB,GAAOlG,KACPypB,KACGvjB,GAAM,CACX,GAAIoB,GAASpB,EAAK0D,OAEU,SAApB1D,EAAK0D,OAAOG,KACV7D,EAAKoB,MACLpB,EAAK4M,UAHThN,OAKQA,KAAVwB,GACFmiB,EAAKE,QAAQriB,GAEfpB,EAAOA,EAAK0D,OAEd,MAAO6f,IAQThkB,EAAK9C,UAAUyG,SAAW,SAAU2R,GAGlC,IAFA,GAAI0O,GAAOxoB,EAAK6Z,UAAUC,GACtB7U,EAAOlG,KACJkG,GAAQujB,EAAKvnB,OAAS,GAAG,CAC9B,GAAIgD,GAAOukB,EAAKG,OAChB,IAAoB,gBAAT1kB,GAAmB,CAC5B,GAAkB,UAAdgB,EAAK6D,KACP,KAAM,IAAIhJ,OAAM,kCAAoCmE,EAAO,qBAE7DgB,GAAOA,EAAKwK,OAAOxL,OAEhB,CACH,GAAkB,WAAdgB,EAAK6D,KACP,KAAM,IAAIhJ,OAAM,yBAA2BmE,EAAO,sBAEpDgB,GAAOA,EAAKwK,OAAOpH,OAAO,SAAUO,GAClC,MAAOA,GAAMvC,QAAUpC,IACtB,IAIP,MAAOgB,IAQTT,EAAK9C,UAAUgH,YAAc,WAG3B,IAFA,GAAIkgB,MACAjgB,EAAS5J,KAAK4J,OACXA,GACLigB,EAAQF,QAAQ/f,GAChBA,EAASA,EAAOA,MAElB,OAAOigB,IAWTpkB,EAAK9C,UAAUmG,SAAW,SAAU3H,EAAO0I,GAEzC7J,KAAKqI,SAELrI,KAAKmB,MAAQA,CACb,IAAI2oB,GAAU9pB,KAAK2F,IAAImkB,OACvB,IAAI3oB,EAAO,CACJ2oB,IACHA,EAAUrd,SAASC,cAAc,MACjC1M,KAAK2F,IAAImkB,QAAUA,EACnB9pB,KAAK2F,IAAIokB,QAAQtjB,WAAWiB,YAAYoiB,GAG1C,IAAIE,GAAUvd,SAASC,cAAc,MACrCsd,GAAQrd,UAAY,sCACpBqd,EAAQtiB,YAAY+E,SAAS0M,eAAehY,EAAM2I,SAElD,IAAI0c,GAAS/Z,SAASC,cAAc,SAsCpC,KArCA8Z,EAAOzc,KAAO,SACdyc,EAAO7Z,UAAY,0BACnB6Z,EAAO9e,YAAYsiB,GAGnBxD,EAAOjZ,YAAciZ,EAAOyD,QAAU,WAEpC,IAAK,GADDC,IAAc,QAAS,QAAS,QAAS,QACpCjlB,EAAI,EAAGA,EAAIilB,EAAWhoB,OAAQ+C,IAAK,CAC1C,GAAIklB,GAAYD,EAAWjlB,EAC3B+kB,GAAQrd,UAAY,iCAAmCwd,CAEvD,IAAInC,GAAchoB,KAAK2L,OAAOxE,QAAQ+P,wBAClCkT,EAAcJ,EAAQ9S,uBAI1B,IAFUjW,EAAKua,WAAWwM,EAAaoC,EAD1B,IAIX,QAGJnjB,KAAKjH,MAIH6J,IACF2c,EAAO5Z,QAAU,WACf/C,EAAMF,cAAc7H,QAAQ,SAAU8H,GACpCA,EAAOnC,QAAO,KAGhBoC,EAAM4B,SAAS,WACb5B,EAAM9B,YAML+hB,EAAQ5Q,YACb4Q,EAAQpjB,YAAYojB,EAAQ5Q,WAE9B4Q,GAAQpiB,YAAY8e,OAGhBsD,KACF9pB,KAAK2F,IAAImkB,QAAQrjB,WAAWC,YAAY1G,KAAK2F,IAAImkB,eAC1C9pB,MAAK2F,IAAImkB,UAUtBrkB,EAAK9C,UAAU0nB,SAAW,WACxB,MAAOrqB,MAAK4J,OAAS5J,KAAK4J,OAAO8G,OAAO1O,QAAQhC,OAAS,GAO3DyF,EAAK9C,UAAU2nB,UAAY,SAAS1gB,GAClC5J,KAAK4J,OAASA,GAQhBnE,EAAK9C,UAAUomB,SAAW,SAASzhB,EAAO0hB,GACxChpB,KAAKsH,MAAQA,EACbtH,KAAKuqB,cAAgBjjB,EACrBtH,KAAKgpB,eAAmC,IAAlBA,GAOxBvjB,EAAK9C,UAAU6nB,SAAW,WAKxB,WAJmB1kB,KAAf9F,KAAKsH,OACPtH,KAAKyqB,eAGAzqB,KAAKsH,OASd7B,EAAK9C,UAAUsmB,SAAW,SAAS1hB,EAAOwC,GACxC,GAAI2gB,GAAY7gB,EAGZ6G,EAAS1Q,KAAK0Q,MAClB,IAAIA,EACF,KAAOA,EAAOxO,QACZlC,KAAK0G,YAAYgK,EAAO,GAS5B,IAHA1Q,KAAK+J,KAAO/J,KAAK2qB,SAASpjB,GAGtBwC,GAAQA,GAAQ/J,KAAK+J,KAAM,CAC7B,GAAY,UAARA,GAAiC,QAAb/J,KAAK+J,KAI3B,KAAM,IAAIhJ,OAAM,6CACoBf,KAAK+J,KACrC,2BAA6BA,EAAO,IALxC/J,MAAK+J,KAAOA,EAShB,GAAiB,SAAb/J,KAAK+J,KAAiB,CAExB/J,KAAK0Q,SACL,KAAK,GAAIzL,GAAI,EAAG6S,EAAOvQ,EAAMrF,OAAQ+C,EAAI6S,EAAM7S,QAE1Ba,MADnB4kB,EAAanjB,EAAMtC,KACeylB,YAAsBxjB,YAEtD2C,EAAQ,GAAIpE,GAAKzF,KAAK2L,QACpBpE,MAAOmjB,IAET1qB,KAAK0H,YAAYmC,GAGrB7J,MAAKuH,MAAQ,OAEV,IAAiB,UAAbvH,KAAK+J,KAAkB,CAE9B/J,KAAK0Q,SACL,KAAK,GAAIka,KAAcrjB,GACjBA,EAAMR,eAAe6jB,SAEJ9kB,MADnB4kB,EAAanjB,EAAMqjB,KACeF,YAAsBxjB,YAEtD2C,EAAQ,GAAIpE,GAAKzF,KAAK2L,QACpBrE,MAAOsjB,EACPrjB,MAAOmjB,IAET1qB,KAAK0H,YAAYmC,IAIvB7J,MAAKuH,MAAQ,IAG8B,IAAvCvH,KAAK2L,OAAO9K,QAAQgqB,gBACtB7qB,KAAKsU,KAAK,WAKZtU,MAAK0Q,WAAS5K,GACd9F,KAAKuH,MAAQA,CAGfvH,MAAK8qB,cAAgB9qB,KAAKuH,OAO5B9B,EAAK9C,UAAUkF,SAAW,WAGxB,GAAiB,SAAb7H,KAAK+J,KAAiB,CACxB,GAAIghB,KAIJ,OAHA/qB,MAAK0Q,OAAO5O,QAAS,SAAU+H,GAC7BkhB,EAAI/Y,KAAKnI,EAAMhC,cAEVkjB,EAEJ,GAAiB,UAAb/qB,KAAK+J,KAAkB,CAC9B,GAAIiL,KAIJ,OAHAhV,MAAK0Q,OAAO5O,QAAS,SAAU+H,GAC7BmL,EAAInL,EAAM2gB,YAAc3gB,EAAMhC,aAEzBmN,EAOP,WAJmBlP,KAAf9F,KAAKuH,OACPvH,KAAKgrB,eAGAhrB,KAAKuH,OAQhB9B,EAAK9C,UAAUsoB,SAAW,WACxB,MAAQjrB,MAAK4J,OAAS5J,KAAK4J,OAAOqhB,WAAa,EAAI,GAOrDxlB,EAAK9C,UAAU2N,YAAc,WAC3B,GAAImZ,GAAOzpB,KAAK4J,OAAS5J,KAAK4J,OAAO0G,gBAErC,OADAmZ,GAAKzX,KAAKhS,MACHypB,GASThkB,EAAK9C,UAAUuoB,MAAQ,WACrB,GAAIA,GAAQ,GAAIzlB,GAAKzF,KAAK2L,OAS1B,IARAuf,EAAMnhB,KAAO/J,KAAK+J,KAClBmhB,EAAM5jB,MAAQtH,KAAKsH,MACnB4jB,EAAMC,eAAiBnrB,KAAKmrB,eAC5BD,EAAMlC,cAAgBhpB,KAAKgpB,cAC3BkC,EAAM3jB,MAAQvH,KAAKuH,MACnB2jB,EAAME,eAAiBprB,KAAKorB,eAC5BF,EAAMpC,SAAW9oB,KAAK8oB,SAElB9oB,KAAK0Q,OAAQ,CAEf,GAAI2a,KACJrrB,MAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5B,GAAIyhB,GAAazhB,EAAMqhB,OACvBI,GAAWhB,UAAUY,GACrBG,EAAYrZ,KAAKsZ,KAEnBJ,EAAMxa,OAAS2a,MAIfH,GAAMxa,WAAS5K,EAGjB,OAAOolB,IAQTzlB,EAAK9C,UAAU8E,OAAS,SAASwC,GAC1BjK,KAAK0Q,SAKV1Q,KAAK8oB,UAAW,EACZ9oB,KAAK2F,IAAI8B,SACXzH,KAAK2F,IAAI8B,OAAOkF,UAAY,uBAG9B3M,KAAK0U,cAEW,IAAZzK,GACFjK,KAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BA,EAAMpC,OAAOwC,OAUnBxE,EAAK9C,UAAUwF,SAAW,SAAS8B,GAC5BjK,KAAK0Q,SAIV1Q,KAAKuU,cAGW,IAAZtK,GACFjK,KAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BA,EAAM1B,SAAS8B,KAMfjK,KAAK2F,IAAI8B,SACXzH,KAAK2F,IAAI8B,OAAOkF,UAAY,wBAE9B3M,KAAK8oB,UAAW,IAMlBrjB,EAAK9C,UAAU+R,WAAa,WAE1B,GADa1U,KAAK0Q,QAIb1Q,KAAK8oB,SAAV,CAIA,GAAIlE,GAAK5kB,KAAK2F,IAAIif,GACdxd,EAAQwd,EAAKA,EAAGne,eAAaX,EACjC,IAAIsB,EAAO,CAET,GAAI4M,GAAShU,KAAKurB,YACdC,EAAS5G,EAAG6G,WACZD,GACFpkB,EAAMsM,aAAaM,EAAQwX,GAG3BpkB,EAAMM,YAAYsM,GAIpBhU,KAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BzC,EAAMsM,aAAa7J,EAAMxB,SAAU2L,GACnCnK,EAAM6K,kBAQZjP,EAAK9C,UAAU8jB,KAAO,WACpB,GAAI7B,GAAK5kB,KAAK2F,IAAIif,GACdxd,EAAQwd,EAAKA,EAAGne,eAAaX,EAC7BsB,IACFA,EAAMV,YAAYke,GAEpB5kB,KAAKuU,cAOP9O,EAAK9C,UAAU4R,WAAa,WAE1B,GADavU,KAAK0Q,QAIb1Q,KAAK8oB,SAAV,CAKA,GAAI9U,GAAShU,KAAKurB,WACdvX,GAAOvN,YACTuN,EAAOvN,WAAWC,YAAYsN,GAIhChU,KAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BA,EAAM4c,WAUVhhB,EAAK9C,UAAU+E,YAAc,SAASxB,GACpC,GAAIlG,KAAK0rB,aAAc,CASrB,GAPAxlB,EAAKokB,UAAUtqB,MACfkG,EAAK8iB,cAA8B,UAAbhpB,KAAK+J,KACV,SAAb/J,KAAK+J,OACP7D,EAAK4M,MAAQ9S,KAAK0Q,OAAOxO,QAE3BlC,KAAK0Q,OAAOsB,KAAK9L,GAEblG,KAAK8oB,SAAU,CAEjB,GAAI6C,GAAQzlB,EAAKmC,SACbujB,EAAW5rB,KAAKurB,YAChBnkB,EAAQwkB,EAAWA,EAASnlB,eAAaX,EACzC8lB,IAAYxkB,GACdA,EAAMsM,aAAaiY,EAAOC,GAG5B1lB,EAAKwO,aAGP1U,KAAKgK,WAAW6hB,eAAiB,IACjC3lB,EAAK8D,WAAWC,SAAW,MAW/BxE,EAAK9C,UAAUyR,WAAa,SAASlO,EAAMyN,GACzC,GAAI3T,KAAK0rB,aAAc,CAGrB,GAAItjB,GAASpI,KAAK2F,IAAM,GAAI3F,KAAK2F,IAAIif,GAAGne,eAAaX,EACrD,IAAIsC,EAAO,CACT,GAAI0jB,GAASrf,SAASC,cAAc,KACpCof,GAAO/T,MAAMxN,OAASnC,EAAMoC,aAAe,KAC3CpC,EAAMV,YAAYokB,GAGhB5lB,EAAK0D,QACP1D,EAAK0D,OAAOlD,YAAYR,GAGtByN,YAAsBoY,GACxB/rB,KAAK0H,YAAYxB,GAGjBlG,KAAK0T,aAAaxN,EAAMyN,GAGtBvL,GACFA,EAAM1B,YAAYolB,KAYxBrmB,EAAK9C,UAAUqpB,OAAS,SAAU9lB,EAAM4M,GACtC,GAAI5M,EAAK0D,QAAU5J,KAAM,CAEJA,KAAK0Q,OAAO1O,QAAQkE,GACpB4M,GAEjBA,IAIJ,GAAIa,GAAa3T,KAAK0Q,OAAOoC,IAAU9S,KAAKgU,MAC5ChU,MAAKoU,WAAWlO,EAAMyN,IASxBlO,EAAK9C,UAAU+Q,aAAe,SAASxN,EAAMyN,GAC3C,GAAI3T,KAAK0rB,aAAc,CACrB,GAAI/X,GAAc3T,KAAKgU,OAIrB9N,EAAKokB,UAAUtqB,MACfkG,EAAK8iB,cAA8B,UAAbhpB,KAAK+J,KAC3B/J,KAAK0Q,OAAOsB,KAAK9L,OAEd,CAEH,GAAI4M,GAAQ9S,KAAK0Q,OAAO1O,QAAQ2R,EAChC,KAAc,GAAVb,EACF,KAAM,IAAI/R,OAAM,iBAIlBmF,GAAKokB,UAAUtqB,MACfkG,EAAK8iB,cAA8B,UAAbhpB,KAAK+J,KAC3B/J,KAAK0Q,OAAOqE,OAAOjC,EAAO,EAAG5M,GAG/B,GAAIlG,KAAK8oB,SAAU,CAEjB,GAAI6C,GAAQzlB,EAAKmC,SACbmjB,EAAS7X,EAAWtL,SACpBjB,EAAQokB,EAASA,EAAO/kB,eAAaX,EACrC0lB,IAAUpkB,GACZA,EAAMsM,aAAaiY,EAAOH,GAG5BtlB,EAAKwO,aAGP1U,KAAKgK,WAAW6hB,eAAiB,IACjC3lB,EAAK8D,WAAWC,SAAW,MAU/BxE,EAAK9C,UAAUmR,YAAc,SAAS5N,EAAM2N,GAC1C,GAAI7T,KAAK0rB,aAAc,CACrB,GAAI5Y,GAAQ9S,KAAK0Q,OAAO1O,QAAQ6R,GAC5BF,EAAa3T,KAAK0Q,OAAOoC,EAAQ,EACjCa,GACF3T,KAAK0T,aAAaxN,EAAMyN,GAGxB3T,KAAK0H,YAAYxB,KAYvBT,EAAK9C,UAAUmE,OAAS,SAASwB,GAC/B,GACIwK,GADAvK,KAEAzB,EAASwB,EAAOA,EAAK2jB,kBAAgBnmB,EAOzC,UAJO9F,MAAKksB,kBACLlsB,MAAKmsB,gBAGMrmB,IAAd9F,KAAKsH,MAAoB,CAE3BwL,EADY6D,OAAO3W,KAAKsH,OAAO2kB,cACjBjqB,QAAQ8E,IACR,GAAVgM,IACF9S,KAAKksB,aAAc,EACnB3jB,EAAQyJ,MACN9L,KAAQlG,KACRiX,KAAQ,WAKZjX,KAAKosB,kBAIP,GAAIpsB,KAAK0rB,aAAc,CAIrB,GAAI1rB,KAAK0Q,OAAQ,CACf,GAAI2b,KACJrsB,MAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BwiB,EAAeA,EAAa7iB,OAAOK,EAAM/C,OAAOwB,MAElDC,EAAUA,EAAQiB,OAAO6iB,GAI3B,OAAcvmB,IAAVgB,EAAqB,CAEI,GAAvBulB,EAAanqB,OACflC,KAAKmI,UAFO,GAKZnI,KAAKyH,QALO,QASb,CAEH,OAAkB3B,IAAd9F,KAAKuH,MAAqB,CAE5BuL,EADY6D,OAAO3W,KAAKuH,OAAO0kB,cACjBjqB,QAAQ8E,IACR,GAAVgM,IACF9S,KAAKmsB,aAAc,EACnB5jB,EAAQyJ,MACN9L,KAAQlG,KACRiX,KAAQ,WAMdjX,KAAKssB,kBAGP,MAAO/jB,IAQT9C,EAAK9C,UAAU8I,SAAW,SAASC,GACjC,IAAK1L,KAAK2F,IAAIif,KAAO5kB,KAAK2F,IAAIif,GAAGne,WAI/B,IAFA,GAAImD,GAAS5J,KAAK4J,OAEXA,GACLA,EAAOnC,QAFK,GAGZmC,EAASA,EAAOA,MAIhB5J,MAAK2F,IAAIif,IAAM5kB,KAAK2F,IAAIif,GAAGne,YAC7BzG,KAAK2L,OAAOF,SAASzL,KAAK2F,IAAIif,GAAG2H,UAAW7gB,IAMhDjG,EAAK+mB,iBAAe1mB,GAQpBL,EAAK9C,UAAUoF,MAAQ,SAAS0kB,GAG9B,GAFAhnB,EAAK+mB,aAAeC,EAEhBzsB,KAAK2F,IAAIif,IAAM5kB,KAAK2F,IAAIif,GAAGne,WAAY,CACzC,GAAId,GAAM3F,KAAK2F,GAEf,QAAQ8mB,GACN,IAAK,OACC9mB,EAAIiJ,KACNjJ,EAAIiJ,KAAK7G,QAGTpC,EAAIuC,KAAKH,OAEX,MAEF,KAAK,OACHpC,EAAIuC,KAAKH,OACT,MAEF,KAAK,SACC/H,KAAK0rB,aACP/lB,EAAI8B,OAAOM,QAEJpC,EAAI2B,OAAStH,KAAKgpB,eACzBrjB,EAAI2B,MAAMS,QACV9G,EAAKoQ,sBAAsB1L,EAAI2B,QAExB3B,EAAI4B,QAAUvH,KAAK0rB,cAC1B/lB,EAAI4B,MAAMQ,QACV9G,EAAKoQ,sBAAsB1L,EAAI4B,QAG/B5B,EAAIuC,KAAKH,OAEX,MAEF,KAAK,QACCpC,EAAI2B,OAAStH,KAAKgpB,eACpBrjB,EAAI2B,MAAMS,QACV9G,EAAKoQ,sBAAsB1L,EAAI2B,QAExB3B,EAAI4B,QAAUvH,KAAK0rB,cAC1B/lB,EAAI4B,MAAMQ,QACV9G,EAAKoQ,sBAAsB1L,EAAI4B,QAExBvH,KAAK0rB,aACZ/lB,EAAI8B,OAAOM,QAGXpC,EAAIuC,KAAKH,OAEX,MAEF,KAAK,QACL,QACMpC,EAAIuF,OAENvF,EAAIuF,OAAOnD,QAEJpC,EAAI4B,QAAUvH,KAAK0rB,cAC1B/lB,EAAI4B,MAAMQ,QACV9G,EAAKoQ,sBAAsB1L,EAAI4B,QAExB5B,EAAI2B,OAAStH,KAAKgpB,eACzBrjB,EAAI2B,MAAMS,QACV9G,EAAKoQ,sBAAsB1L,EAAI2B,QAExBtH,KAAK0rB,aACZ/lB,EAAI8B,OAAOM,QAGXpC,EAAIuC,KAAKH,WAWnBtC,EAAKyF,OAAS,SAASwhB,GACrBrgB,WAAW,WACTpL,EAAKoQ,sBAAsBqb,IAC1B,IAMLjnB,EAAK9C,UAAUiF,KAAO,WAEpB5H,KAAKgrB,cAAa,GAClBhrB,KAAKyqB,cAAa,IASpBhlB,EAAK9C,UAAUgqB,aAAe,SAASzmB,GACrC,GAAIlG,MAAQkG,EACV,OAAO,CAGT,IAAIwK,GAAS1Q,KAAK0Q,MAClB,IAAIA,EAEF,IAAK,GAAIzL,GAAI,EAAG6S,EAAOpH,EAAOxO,OAAQ+C,EAAI6S,EAAM7S,IAC9C,GAAIyL,EAAOzL,GAAG0nB,aAAazmB,GACzB,OAAO,CAKb,QAAO,GAWTT,EAAK9C,UAAUiqB,MAAQ,SAAS1mB,EAAMyN,GACpC,GAAIzN,GAAQyN,EAAZ,CAMA,GAAIzN,EAAKymB,aAAa3sB,MACpB,KAAM,IAAIe,OAAM,6CAIdmF,GAAK0D,QACP1D,EAAK0D,OAAOlD,YAAYR,EAI1B,IAAIglB,GAAQhlB,EAAKglB,OACjBhlB,GAAK2mB,WAGDlZ,EACF3T,KAAK0T,aAAawX,EAAOvX,GAGzB3T,KAAK0H,YAAYwjB,KAgBrBzlB,EAAK9C,UAAU+D,YAAc,SAASR,GACpC,GAAIlG,KAAK0Q,OAAQ,CACf,GAAIoC,GAAQ9S,KAAK0Q,OAAO1O,QAAQkE,EAEhC,KAAc,GAAV4M,EAAa,CACf5M,EAAKugB,aAGEvgB,GAAKgmB,kBACLhmB,GAAKimB,WAEZ,IAAIW,GAAc9sB,KAAK0Q,OAAOqE,OAAOjC,EAAO,GAAG,EAK/C,OAJAga,GAAYljB,OAAS,KAErB5J,KAAKgK,WAAW6hB,eAAiB,IAE1BiB,KAcbrnB,EAAK9C,UAAUoqB,QAAU,SAAU7mB,GACjClG,KAAK0G,YAAYR,IAOnBT,EAAK9C,UAAU0Q,WAAa,SAAUE,GACpC,GAAID,GAAUtT,KAAK+J,IAEnB,IAAIuJ,GAAWC,EAAf,CAKA,GAAgB,UAAXA,GAAkC,QAAXA,GACZ,UAAXD,GAAkC,QAAXA,EAIvB,CAEH,GACI0Z,GADA5lB,EAAQpH,KAAK2F,IAAIif,GAAK5kB,KAAK2F,IAAIif,GAAGne,eAAaX,EAGjDknB,GADEhtB,KAAK8oB,SACE9oB,KAAKurB,YAGLvrB,KAAKqI,QAEhB,IAAImjB,GAAUwB,GAAUA,EAAOvmB,WAAcumB,EAAOvB,gBAAc3lB,EAGlE9F,MAAKymB,OACLzmB,KAAK6sB,WAGL7sB,KAAK+J,KAAOwJ,EAGG,UAAXA,GACGvT,KAAK0Q,SACR1Q,KAAK0Q,WAGP1Q,KAAK0Q,OAAO5O,QAAQ,SAAU+H,EAAOiJ,GACnCjJ,EAAMgjB,iBACChjB,GAAMiJ,MACbjJ,EAAMmf,eAAgB,MACHljB,IAAf+D,EAAMvC,QACRuC,EAAMvC,MAAQ,MAIH,UAAXgM,GAAkC,QAAXA,IACzBtT,KAAK8oB,UAAW,IAGA,SAAXvV,GACFvT,KAAK0Q,SACR1Q,KAAK0Q,WAGP1Q,KAAK0Q,OAAO5O,QAAQ,SAAU+H,EAAOiJ,GACnCjJ,EAAMgjB,WACNhjB,EAAMmf,eAAgB,EACtBnf,EAAMiJ,MAAQA,IAGD,UAAXQ,GAAkC,QAAXA,IACzBtT,KAAK8oB,UAAW,IAIlB9oB,KAAK8oB,UAAW,EAId1hB,IACEokB,EACFpkB,EAAMsM,aAAa1T,KAAKqI,SAAUmjB,GAGlCpkB,EAAMM,YAAY1H,KAAKqI,WAG3BrI,KAAK0U,iBApEL1U,MAAK+J,KAAOwJ,CAuEC,SAAXA,GAAgC,UAAXA,IAGrBvT,KAAKuH,MADQ,UAAXgM,EACWoD,OAAO3W,KAAKuH,OAGZvH,KAAKitB,YAAYtW,OAAO3W,KAAKuH,QAG5CvH,KAAK+H,SAGP/H,KAAKgK,WAAW6hB,eAAiB,MASnCpmB,EAAK9C,UAAUqoB,aAAe,SAASkC,GAKrC,GAJIltB,KAAK2F,IAAI4B,OAAsB,SAAbvH,KAAK+J,MAAgC,UAAb/J,KAAK+J,OACjD/J,KAAKorB,eAAiBnqB,EAAKqY,aAAatZ,KAAK2F,IAAI4B,YAGxBzB,IAAvB9F,KAAKorB,eACP,IAEE,GAAI7jB,EACJ,IAAiB,UAAbvH,KAAK+J,KACPxC,EAAQvH,KAAKmtB,cAAcntB,KAAKorB,oBAE7B,CACH,GAAItK,GAAM9gB,KAAKmtB,cAAcntB,KAAKorB,eAClC7jB,GAAQvH,KAAKitB,YAAYnM,GAEvBvZ,IAAUvH,KAAKuH,QACjBvH,KAAKuH,MAAQA,EACbvH,KAAKkpB,2BAGT,MAAO3mB,GAGL,GAFAvC,KAAKuH,UAAQzB,IAEE,IAAXonB,EACF,KAAM3qB,KAUdkD,EAAK9C,UAAUwmB,eAAiB,WAG9B,GAAIlU,GAAejV,KAAK2L,OAAON,cAC/B,IAAI4J,EAAa9J,MAAO,CACtB,GAAIiiB,GAAWnsB,EAAKob,SAAS1F,OAAO3W,KAAKuH,OAAQoP,OAAO3W,KAAK8qB,eAC7D7V,GAAa9J,MAAM6N,YAAcoU,EAAS5d,MAC1CyF,EAAa9J,MAAM8N,UAAYmU,EAAS3d,IAE1C,GAAIyF,GAAelV,KAAK2L,OAAON,cAC/B,IAAI6J,EAAa/J,MAAO,CACtB,GAAIkiB,GAAWpsB,EAAKob,SAAS1F,OAAO3W,KAAK8qB,eAAgBnU,OAAO3W,KAAKuH,OACrE2N,GAAa/J,MAAM6N,YAAcqU,EAAS7d,MAC1C0F,EAAa/J,MAAM8N,UAAYoU,EAAS5d,IAG1CzP,KAAK2L,OAAOjD,UAAU,aACpBxC,KAAMlG,KACNiT,SAAUjT,KAAK8qB,cACf5X,SAAUlT,KAAKuH,MACf0N,aAAcA,EACdC,aAAcA,IAGhBlV,KAAK8qB,cAAgB9qB,KAAKuH,OAO5B9B,EAAK9C,UAAU0mB,eAAiB,WAG9B,GAAIpU,GAAejV,KAAK2L,OAAON,cAC/B,IAAI4J,EAAa9J,MAAO,CACtB,GAAIiiB,GAAWnsB,EAAKob,SAASrc,KAAKsH,MAAOtH,KAAKuqB,cAC9CtV,GAAa9J,MAAM6N,YAAcoU,EAAS5d,MAC1CyF,EAAa9J,MAAM8N,UAAYmU,EAAS3d,IAE1C,GAAIyF,GAAelV,KAAK2L,OAAON,cAC/B,IAAI6J,EAAa/J,MAAO,CACtB,GAAIkiB,GAAWpsB,EAAKob,SAASrc,KAAKuqB,cAAevqB,KAAKsH,MACtD4N,GAAa/J,MAAM6N,YAAcqU,EAAS7d,MAC1C0F,EAAa/J,MAAM8N,UAAYoU,EAAS5d,IAG1CzP,KAAK2L,OAAOjD,UAAU,aACpBxC,KAAMlG,KACNiT,SAAUjT,KAAKuqB,cACfrX,SAAUlT,KAAKsH,MACf2N,aAAcA,EACdC,aAAcA,IAGhBlV,KAAKuqB,cAAgBvqB,KAAKsH,OAU5B7B,EAAK9C,UAAU2pB,gBAAkB,WAC/B,GAAIgB,GAAWttB,KAAK2F,IAAI4B,KACxB,IAAI+lB,EAAU,CACZ,GAAIC,IAAc,oBAIdhmB,EAAQvH,KAAKuH,MACbwC,EAAqB,QAAb/J,KAAK+J,KAAkB9I,EAAK8I,KAAKxC,GAASvH,KAAK+J,KACvDgN,EAAgB,UAARhN,GAAoB9I,EAAK8V,MAAMxP,EAC3CgmB,GAAWvb,KAAK,cAAgBjI,GAC5BgN,GACFwW,EAAWvb,KAAK,iBAoBlB,IAhBqC,IAAtB2E,OAAO3W,KAAKuH,QAA6B,SAAbvH,KAAK+J,MAAgC,UAAb/J,KAAK+J,MAEtEwjB,EAAWvb,KAAK,oBAIdhS,KAAK4lB,mBACP2H,EAAWvb,KAAK,+BAEdhS,KAAKmsB,aACPoB,EAAWvb,KAAK,wBAGlBsb,EAAS3gB,UAAY4gB,EAAWrX,KAAK,KAGzB,SAARnM,GAA2B,UAARA,EAAkB,CACvC,GAAIyjB,GAAQxtB,KAAK0Q,OAAS1Q,KAAK0Q,OAAOxO,OAAS,CAC/CorB,GAAS1f,MAAQ5N,KAAK+J,KAAO,eAAiByjB,EAAQ,aAE/CzW,IAAS/W,KAAKyB,SAAS8F,MAC9B+lB,EAAS1f,MAAQ,qDAGjB0f,EAAS1f,MAAQ,EA0BnB,IAtBa,YAAT7D,GAAsB/J,KAAKyB,SAAS8F,OACjCvH,KAAK2F,IAAI8nB,WACZztB,KAAK2F,IAAI8nB,SAAWhhB,SAASC,cAAc,SAC3C1M,KAAK2F,IAAI8nB,SAAS1jB,KAAO,WACzB/J,KAAK2F,IAAI+nB,WAAajhB,SAASC,cAAc,MAC7C1M,KAAK2F,IAAI+nB,WAAW/gB,UAAY,kBAChC3M,KAAK2F,IAAI+nB,WAAWhmB,YAAY1H,KAAK2F,IAAI8nB,UAEzCztB,KAAK2F,IAAIokB,QAAQtjB,WAAWiN,aAAa1T,KAAK2F,IAAI+nB,WAAY1tB,KAAK2F,IAAIokB,UAGzE/pB,KAAK2F,IAAI8nB,SAASE,QAAU3tB,KAAKuH,OAI7BvH,KAAK2F,IAAI+nB,aACX1tB,KAAK2F,IAAI+nB,WAAWjnB,WAAWC,YAAY1G,KAAK2F,IAAI+nB,kBAC7C1tB,MAAK2F,IAAI+nB,iBACT1tB,MAAK2F,IAAI8nB,UAIhBztB,KAAK4tB,MAAQ5tB,KAAKyB,SAAS8F,MAAO,CAEpC,IAAKvH,KAAK2F,IAAIuF,OAAQ,CACpBlL,KAAK2F,IAAIuF,OAASuB,SAASC,cAAc,UACzC1M,KAAKK,GAAKL,KAAKsH,MAAQ,KAAM,GAAIwN,OAAO+Y,qBACxC7tB,KAAK2F,IAAIuF,OAAO7K,GAAKL,KAAKK,GAC1BL,KAAK2F,IAAIuF,OAAOzH,KAAOzD,KAAK2F,IAAIuF,OAAO7K,GAGvCL,KAAK2F,IAAIuF,OAAOnJ,OAAS0K,SAASC,cAAc,UAChD1M,KAAK2F,IAAIuF,OAAOnJ,OAAOwF,MAAQ,GAC/BvH,KAAK2F,IAAIuF,OAAOnJ,OAAOikB,UAAY,KACnChmB,KAAK2F,IAAIuF,OAAOxD,YAAY1H,KAAK2F,IAAIuF,OAAOnJ,OAG5C,KAAI,GAAIkD,GAAI,EAAGA,EAAIjF,KAAK4tB,KAAK1rB,OAAQ+C,IACnCjF,KAAK2F,IAAIuF,OAAOnJ,OAAS0K,SAASC,cAAc,UAChD1M,KAAK2F,IAAIuF,OAAOnJ,OAAOwF,MAAQvH,KAAK4tB,KAAK3oB,GACzCjF,KAAK2F,IAAIuF,OAAOnJ,OAAOikB,UAAYhmB,KAAK4tB,KAAK3oB,GAC1CjF,KAAK2F,IAAIuF,OAAOnJ,OAAOwF,OAASvH,KAAKuH,QACtCvH,KAAK2F,IAAIuF,OAAOnJ,OAAOwM,UAAW,GAEpCvO,KAAK2F,IAAIuF,OAAOxD,YAAY1H,KAAK2F,IAAIuF,OAAOnJ,OAG9C/B,MAAK2F,IAAImoB,SAAWrhB,SAASC,cAAc,MAC3C1M,KAAK2F,IAAImoB,SAASnhB,UAAY,kBAC9B3M,KAAK2F,IAAImoB,SAASpmB,YAAY1H,KAAK2F,IAAIuF,QACvClL,KAAK2F,IAAIokB,QAAQtjB,WAAWiN,aAAa1T,KAAK2F,IAAImoB,SAAU9tB,KAAK2F,IAAIokB,UAKpE/pB,KAAKwE,QACHxE,KAAKwE,OAAOuC,eAAe,UAC3B/G,KAAKwE,OAAOuC,eAAe,UAC3B/G,KAAKwE,OAAOuC,eAAe,eAMvB/G,MAAK+tB,gBAJZ/tB,KAAK+tB,eAAiB/tB,KAAK2F,IAAIokB,QAAQ/D,UACvChmB,KAAK2F,IAAIokB,QAAQhS,MAAMiW,WAAa,SACpChuB,KAAK2F,IAAIokB,QAAQ/D,UAAY,QAO3BhmB,MAAK2F,IAAImoB,WACX9tB,KAAK2F,IAAImoB,SAASrnB,WAAWC,YAAY1G,KAAK2F,IAAImoB,gBAC3C9tB,MAAK2F,IAAImoB,eACT9tB,MAAK2F,IAAIuF,OAChBlL,KAAK2F,IAAIokB,QAAQ/D,UAAYhmB,KAAK+tB,eAClC/tB,KAAK2F,IAAIokB,QAAQhS,MAAMiW,WAAa,SAC7BhuB,MAAK+tB,eAKhB9sB,GAAK0W,gBAAgB2V,KAWzB7nB,EAAK9C,UAAUypB,gBAAkB,WAC/B,GAAI6B,GAAWjuB,KAAK2F,IAAI2B,KACxB,IAAI2mB,EAAU,CAEyB,IAAtBtX,OAAO3W,KAAKsH,QAAoC,SAApBtH,KAAK4J,OAAOG,KAErD9I,EAAKsW,aAAa0W,EAAU,oBAG5BhtB,EAAKyW,gBAAgBuW,EAAU,oBAI7BjuB,KAAK2lB,kBACP1kB,EAAKsW,aAAa0W,EAAU,+BAG5BhtB,EAAKyW,gBAAgBuW,EAAU,+BAE7BjuB,KAAKksB,YACPjrB,EAAKsW,aAAa0W,EAAU,wBAG5BhtB,EAAKyW,gBAAgBuW,EAAU,wBAIjChtB,EAAK0W,gBAAgBsW,KAUzBxoB,EAAK9C,UAAU8nB,aAAe,SAASyC,GAKrC,GAJIltB,KAAK2F,IAAI2B,OAAStH,KAAKgpB,gBACzBhpB,KAAKmrB,eAAiBlqB,EAAKqY,aAAatZ,KAAK2F,IAAI2B,YAGxBxB,IAAvB9F,KAAKmrB,eACP,IACE,GAAI7jB,GAAQtH,KAAKmtB,cAAcntB,KAAKmrB,eAEhC7jB,KAAUtH,KAAKsH,QACjBtH,KAAKsH,MAAQA,EACbtH,KAAKopB,2BAGT,MAAO7mB,GAGL,GAFAvC,KAAKsH,UAAQxB,IAEE,IAAXonB,EACF,KAAM3qB,KAUdkD,EAAK9C,UAAUmC,SAAW,WACxB,GAAImE,KAGJ,IAAkB,WAAdjJ,KAAK+J,KAAmB,CAG1B,IAAK,GAFDlI,MACAqsB,KACKjpB,EAAI,EAAGA,EAAIjF,KAAK0Q,OAAOxO,OAAQ+C,IAAK,CAC3C,GAAI4E,GAAQ7J,KAAK0Q,OAAOzL,EACpBpD,GAAKkF,eAAe8C,EAAMvC,QAC5B4mB,EAAclc,KAAKnI,EAAMvC,OAE3BzF,EAAKgI,EAAMvC,QAAS,EAGlB4mB,EAAchsB,OAAS,IACzB+G,EAASjJ,KAAK0Q,OACTpH,OAAO,SAAUpD,GAChB,OAA8C,IAAvCgoB,EAAclsB,QAAQkE,EAAKoB,SAEnC4B,IAAI,SAAUhD,GACb,OACEA,KAAMA,EACN/E,OACE2I,QAAS,kBAAoB5D,EAAKoB,MAAQ,SAQxD,GAAItH,KAAK0Q,OACP,IAAK,GAAIzL,GAAI,EAAGA,EAAIjF,KAAK0Q,OAAOxO,OAAQ+C,IAAK,CAC3C,GAAI5C,GAAIrC,KAAK0Q,OAAOzL,GAAGH,UACnBzC,GAAEH,OAAS,IACb+G,EAASA,EAAOO,OAAOnH,IAK7B,MAAO4G,IAMTxD,EAAK9C,UAAUkqB,SAAW,WAKxB7sB,KAAK2F,QAQPF,EAAK9C,UAAU0F,OAAS,WACtB,GAAI1C,GAAM3F,KAAK2F,GACf,IAAIA,EAAIif,GACN,MAAOjf,GAAIif,EASb,IANA5kB,KAAKwpB,qBAGL7jB,EAAIif,GAAKnY,SAASC,cAAc,MAChC/G,EAAIif,GAAG1e,KAAOlG,KAEmB,SAA7BA,KAAK2L,OAAO9K,QAAQgC,KAAiB,CACvC,GAAIsrB,GAAS1hB,SAASC,cAAc,KACpC,IAAI1M,KAAKyB,SAAS6F,OAEZtH,KAAK4J,OAAQ,CACf,GAAIwkB,GAAU3hB,SAASC,cAAc,SACrC0hB,GAAQrkB,KAAO,SACfpE,EAAIiJ,KAAOwf,EACXA,EAAQzhB,UAAY,sBACpByhB,EAAQxgB,MAAQ,6CAChBugB,EAAOzmB,YAAY0mB,GAGvBzoB,EAAIif,GAAGld,YAAYymB,EAGnB,IAAIE,GAAS5hB,SAASC,cAAc,MAChCxE,EAAOuE,SAASC,cAAc,SAClCxE,GAAK6B,KAAO,SACZpE,EAAIuC,KAAOA,EACXA,EAAKyE,UAAY,yBACjBzE,EAAK0F,MAAQ,0CACbygB,EAAO3mB,YAAY/B,EAAIuC,MACvBvC,EAAIif,GAAGld,YAAY2mB,GAIrB,GAAIC,GAAU7hB,SAASC,cAAc,KAOrC,OANA/G,GAAIif,GAAGld,YAAY4mB,GACnB3oB,EAAI4oB,KAAOvuB,KAAKwuB,iBAChBF,EAAQ5mB,YAAY/B,EAAI4oB,MAExBvuB,KAAKgK,WAAW6hB,eAAiB,IAE1BlmB,EAAIif,IAQbnf,EAAKkJ,YAAc,SAAU3I,EAAOuG,GAClC,IAAK4D,MAAMhL,QAAQa,GACjB,MAAOP,GAAKkJ,aAAa3I,GAAQuG,EAEnC,IAAqB,IAAjBvG,EAAM9D,OAAV,CAIA,GAAIusB,GAAYzoB,EAAM,GAClB0oB,EAAW1oB,EAAMA,EAAM9D,OAAS,GAChCysB,EAAclpB,EAAKkC,kBAAkB4E,EAAMM,QAC3C8G,EAAa+a,EAASE,eACtBjjB,EAAS8iB,EAAU9iB,OAInBkjB,EAAU5tB,EAAKqJ,eAAeqkB,EAAYhpB,IAAIif,IAAM3jB,EAAKqJ,eAAemkB,EAAU9oB,IAAIif,GAErFjZ,GAAO+D,YACV/D,EAAO+D,UAAYzO,EAAKwM,iBAAiBkC,OAAQ,YAAa,SAAUpD,GACtE9G,EAAKqpB,OAAO9oB,EAAOuG,MAIlBZ,EAAOkE,UACVlE,EAAOkE,QAAU5O,EAAKwM,iBAAiBkC,OAAQ,UAAU,SAAUpD,GACjE9G,EAAKspB,UAAU/oB,EAAOuG,MAI1BZ,EAAO/F,YAAYgN,OACnBjH,EAAOiD,MACLogB,UAAWviB,SAASwiB,KAAKlX,MAAMmX,OAC/Bja,aAActJ,EAAON,eACrB8I,cAAeR,EACfwb,OAAQ5iB,EAAM0C,MACd4f,QAASA,EACTO,MAAOX,EAAUxD,YAEnBxe,SAASwiB,KAAKlX,MAAMmX,OAAS,OAE7B3iB,EAAMO,mBAQRrH,EAAKqpB,OAAS,SAAU9oB,EAAOuG,GAC7B,IAAK4D,MAAMhL,QAAQa,GACjB,MAAOP,GAAKqpB,QAAQ9oB,GAAQuG,EAE9B,IAAqB,IAAjBvG,EAAM9D,OAAV,CAKA,GAGImtB,GAAQC,EAAQC,EAAQC,EAASC,EAAQC,EACzCC,EAAUC,EACVC,EAASC,EAASC,EAAUC,EAAYC,EAAYC,EALpDvkB,EAAS3F,EAAM,GAAG2F,OAClBxB,EAASoC,EAAM4C,MAAQxD,EAAOiD,KAAKigB,QACnCM,EAAS5iB,EAAM0C,MAIfkhB,GAAQ,EAKR1B,EAAYzoB,EAAM,EAItB,IAHAqpB,EAASZ,EAAU9oB,IAAIif,GACvBiL,EAAU5uB,EAAKqJ,eAAe+kB,GAC9BW,EAAaX,EAAOnH,aAChB/d,EAAS0lB,EAAS,CAEpBP,EAASD,CACT,IACEC,EAASA,EAAOc,gBAChBT,EAAWlqB,EAAKkC,kBAAkB2nB,GAClCQ,EAAUR,EAASruB,EAAKqJ,eAAeglB,GAAU,QAE5CA,GAAUnlB,EAAS2lB,EAEtBH,KAAaA,EAAS/lB,SACxB+lB,MAAW7pB,IAGR6pB,IAEHD,EAASL,EAAO5oB,WAAWyS,WAC3BoW,EAASI,EAASA,EAAOjE,gBAAc3lB,IACvC6pB,EAAWlqB,EAAKkC,kBAAkB2nB,KAClBb,IACdkB,MAAW7pB,KAIX6pB,IAEFL,EAASK,EAAShqB,IAAIif,GACtBkL,EAAUR,EAASruB,EAAKqJ,eAAeglB,GAAU,EAC7CnlB,EAAS2lB,EAAUE,IACrBL,MAAW7pB,KAIX6pB,IACF3pB,EAAMlE,QAAQ,SAAUoE,GACtBypB,EAAS/lB,OAAOwK,WAAWlO,EAAMypB,KAEnCQ,GAAQ,OAGP,CAEH,GAAIzB,GAAW1oB,EAAMA,EAAM9D,OAAS,EAGpC,IAFAutB,EAAUf,EAAS5F,UAAY4F,EAAS1a,OAAU0a,EAAS1a,OAAO3L,SAAWqmB,EAAS/oB,IAAIif,GAC1F4K,EAAUC,EAASA,EAAOhE,gBAAc3lB,GAC3B,CACXiqB,EAAW9uB,EAAKqJ,eAAeklB,GAC/BD,EAASC,CACT,IACEI,EAAWnqB,EAAKkC,kBAAkB4nB,GAC9BA,IACFU,EAAaV,EAAO9D,YAChBxqB,EAAKqJ,eAAeilB,EAAO9D,aAAe,EAC9CyE,EAAaX,EAAUU,EAAaF,EAAY,EAE5CH,EAAShmB,OAAO8G,OAAOxO,QAAU8D,EAAM9D,QACvC0tB,EAAShmB,OAAO8G,OAAO1K,EAAM9D,OAAS,IAAMwsB,IAG9CmB,GAAW,KAKfN,EAASA,EAAO9D,kBAEX8D,GAAUplB,EAAS0lB,EAAUK,EAEpC,IAAIN,GAAYA,EAAShmB,OAAQ,CAE/B,GAAIyF,GAAS8f,EAASxjB,EAAOiD,KAAKugB,OAC9BkB,EAAYtkB,KAAKukB,MAAMjhB,EAAQ,GAAK,GACpC+f,EAAQzjB,EAAOiD,KAAKwgB,MAAQiB,EAC5BE,EAAYX,EAAS3E,UAIzB,KADAqE,EAASM,EAASjqB,IAAIif,GAAGwL,gBAClBG,EAAYnB,GAASE,GAAQ,CAClCK,EAAWlqB,EAAKkC,kBAAkB2nB,EAMlC,IAJoBtpB,EAAMwqB,KAAK,SAAUtqB,GACvC,MAAOA,KAASypB,GAAYA,EAASvH,WAAWliB,UAM7C,CAAA,KAAIypB,YAAoB5D,IAe3B,KAdA,IAAIrb,GAASif,EAAS/lB,OAAO8G,MAC7B,IAAIA,EAAOxO,QAAU8D,EAAM9D,QAAUwO,EAAO1K,EAAM9D,OAAS,IAAMwsB,EAS/D,KAJAkB,GAAWnqB,EAAKkC,kBAAkB2nB,GAClCiB,EAAYX,EAAS3E,WAUzBqE,EAASA,EAAOc,gBAIdX,EAAOhE,aAAemE,EAASjqB,IAAIif,KACrC5e,EAAMlE,QAAQ,SAAUoE,GACtB0pB,EAAShmB,OAAOwK,WAAWlO,EAAM0pB,KAEnCO,GAAQ,KAMZA,IAEFxkB,EAAOiD,KAAKugB,OAASA,EACrBxjB,EAAOiD,KAAKwgB,MAAQX,EAAUxD,YAIhCtf,EAAOzB,gBAAgBC,GAEvBoC,EAAMO,mBAQRrH,EAAKspB,UAAY,SAAU/oB,EAAOuG,GAChC,IAAK4D,MAAMhL,QAAQa,GACjB,MAAOP,GAAKqpB,QAAQ9oB,GAAQuG,EAE9B,IAAqB,IAAjBvG,EAAM9D,OAAV,CAIA,GAAIusB,GAAYzoB,EAAM,GAClB2F,EAAS8iB,EAAU9iB,OACnB/B,EAAS6kB,EAAU7kB,OACnBiH,EAAajH,EAAO8G,OAAO1O,QAAQysB,GACnC9a,EAAa/J,EAAO8G,OAAOG,EAAa7K,EAAM9D,SAAW0H,EAAOoK,MAGhEhO,GAAM,IACRA,EAAM,GAAGL,IAAIuC,KAAKH,OAGpB,IAAIV,IACFrB,MAAOA,EACPiP,aAActJ,EAAOiD,KAAKqG,aAC1BC,aAAcvJ,EAAON,eACrB8I,cAAexI,EAAOiD,KAAKuF,cAC3BE,cAAeV,EAGbtM,GAAO8M,eAAiB9M,EAAOgN,eAEjC1I,EAAOjD,UAAU,YAAarB,GAGhCoF,SAASwiB,KAAKlX,MAAMmX,OAASvjB,EAAOiD,KAAKogB,UACzCrjB,EAAO/F,YAAYiN,SACnB7M,EAAMlE,QAAQ,SAAUoE,GAClBqG,EAAMM,SAAW3G,EAAKP,IAAIiJ,MAAQrC,EAAMM,SAAW3G,EAAKP,IAAIuC,MAC9DyD,EAAO/F,YAAY8M,sBAGhB/G,GAAOiD,KAEVjD,EAAO+D,YACTzO,EAAK+O,oBAAoBL,OAAQ,YAAahE,EAAO+D;0EAC9C/D,GAAO+D,WAEZ/D,EAAOkE,UACT5O,EAAK+O,oBAAoBL,OAAQ,UAAWhE,EAAOkE,eAC5ClE,GAAOkE,SAIhBlE,EAAOZ,iBAEPwB,EAAMO,mBASRrH,EAAK9C,UAAUylB,WAAa,SAAUliB,GAEpC,IADA,GAAIqc,GAAIviB,KAAK4J,OACN2Y,GAAG,CACR,GAAIA,GAAKrc,EACP,OAAO,CAETqc,GAAIA,EAAE3Y,OAGR,OAAO,GAQTnE,EAAK9C,UAAU8tB,gBAAkB,WAC/B,MAAOhkB,UAASC,cAAc,QAQhCjH,EAAK9C,UAAU6P,aAAe,SAAUD,GAClCvS,KAAK2F,IAAIif,KACPrS,EACFtR,EAAKsW,aAAavX,KAAK2F,IAAIif,GAAI,wBAG/B3jB,EAAKyW,gBAAgB1X,KAAK2F,IAAIif,GAAI,wBAGhC5kB,KAAKgU,QACPhU,KAAKgU,OAAOxB,aAAaD,GAGvBvS,KAAK0Q,QACP1Q,KAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BA,EAAM2I,aAAaD,OAW3B9M,EAAK9C,UAAUuN,YAAc,SAAU3B,EAAUmiB,GAC/C1wB,KAAKuO,SAAWA,EAEZvO,KAAK2F,IAAIif,KACPrW,EACFtN,EAAKsW,aAAavX,KAAK2F,IAAIif,GAAI,uBAG/B3jB,EAAKyW,gBAAgB1X,KAAK2F,IAAIif,GAAI,uBAGhC8L,EACFzvB,EAAKsW,aAAavX,KAAK2F,IAAIif,GAAI,oBAG/B3jB,EAAKyW,gBAAgB1X,KAAK2F,IAAIif,GAAI,oBAGhC5kB,KAAKgU,QACPhU,KAAKgU,OAAO9D,YAAY3B,GAGtBvO,KAAK0Q,QACP1Q,KAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BA,EAAMqG,YAAY3B,OAW1B9I,EAAK9C,UAAUyQ,YAAc,SAAU7L,GACrCvH,KAAKuH,MAAQA,EACbvH,KAAKgK,aAOPvE,EAAK9C,UAAUmF,YAAc,SAAUR,GACrCtH,KAAKsH,MAAQA,EACbtH,KAAKgK,aAaPvE,EAAK9C,UAAUqH,UAAY,SAAUnJ,GAEnC,GAAI8vB,GAAU3wB,KAAK2F,IAAI4oB,IACnBoC,KACFA,EAAQ5Y,MAAM6Y,WAA+B,GAAlB5wB,KAAKirB,WAAkB,KAIpD,IAAIgD,GAAWjuB,KAAK2F,IAAI2B,KACxB,IAAI2mB,EAAU,CACRjuB,KAAKgpB,eAEPiF,EAAS4C,gBAAkB7wB,KAAKyB,SAAS6F,MACzC2mB,EAAS6C,YAAa,EACtB7C,EAASthB,UAAY,oBAIrBshB,EAASthB,UAAY,qBAGvB,IAAIokB,EAEFA,OADgBjrB,IAAd9F,KAAK8S,MACK9S,KAAK8S,UAEIhN,IAAd9F,KAAKsH,MACAtH,KAAKsH,MAEVtH,KAAK0rB,aACA1rB,KAAK+J,KAGL,GAEdkkB,EAASjI,UAAYhmB,KAAKgxB,YAAYD,GAEtC/wB,KAAKixB,gBAIP,GAAI3D,GAAWttB,KAAK2F,IAAI4B,KACxB,IAAI+lB,EAAU,CACZ,GAAIE,GAAQxtB,KAAK0Q,OAAS1Q,KAAK0Q,OAAOxO,OAAS,CAC9B,UAAblC,KAAK+J,MACPujB,EAAStH,UAAY,IAAMwH,EAAQ,IACnCvsB,EAAKsW,aAAavX,KAAK2F,IAAIif,GAAI,0BAEX,UAAb5kB,KAAK+J,MACZujB,EAAStH,UAAY,IAAMwH,EAAQ,IACnCvsB,EAAKsW,aAAavX,KAAK2F,IAAIif,GAAI,2BAG/B0I,EAAStH,UAAYhmB,KAAKgxB,YAAYhxB,KAAKuH,OAC3CtG,EAAKyW,gBAAgB1X,KAAK2F,IAAIif,GAAI,0BAKtC5kB,KAAKosB,kBACLpsB,KAAKssB,kBAGDzrB,IAAqC,IAA1BA,EAAQgrB,eAErB7rB,KAAKkxB,oBAGHrwB,IAA+B,IAApBA,EAAQoJ,SAEjBjK,KAAK0Q,QACP1Q,KAAK0Q,OAAO5O,QAAQ,SAAU+H,GAC5BA,EAAMG,UAAUnJ,KAMlBb,KAAKgU,QACPhU,KAAKgU,OAAOhK,aAQhBvE,EAAK9C,UAAUsuB,cAAgB,WAE1BjxB,KAAK2L,QAAU3L,KAAK2L,OAAO9K,UAE5Bb,KAAKwE,OAASiB,EAAK0rB,YAAYnxB,KAAK2L,OAAO9K,QAAQ2D,OAAQxE,KAAK0pB,WAC5D1pB,KAAKwE,OACPxE,KAAK4tB,KAAOnoB,EAAK2rB,UAAUpxB,KAAKwE,cAGzBxE,MAAK4tB,OAYlBnoB,EAAK2rB,UAAY,SAAU5sB,GACzB,GAAIA,EAAOopB,KACT,MAAOppB,GAAOopB,IAGhB,IAAIyD,GAAY7sB,EAAO8sB,OAAS9sB,EAAO+sB,OAAS/sB,EAAOgtB,KACvD,IAAIH,EAAW,CACb,GAAI1b,GAAQ0b,EAAU/nB,OAAO,SAAUC,GAAQ,MAAOA,GAAMqkB,MAC5D,IAAIjY,EAAMzT,OAAS,EACjB,MAAOyT,GAAM,GAAGiY,KAIpB,MAAO,OAUTnoB,EAAK0rB,YAAc,SAAU3sB,EAAQilB,GAGnC,IAAK,GAFDgI,GAAcjtB,EAETS,EAAI,EAAGA,EAAIwkB,EAAKvnB,QAAUuvB,EAAaxsB,IAAK,CACnD,GAAI+Q,GAAMyT,EAAKxkB,EACI,iBAAR+Q,IAAoByb,EAAYC,WACzCD,EAAcA,EAAYC,WAAW1b,IAAQ,KAEvB,gBAARA,IAAoByb,EAAY1f,QAC9C0f,EAAcA,EAAY1f,OAI9B,MAAO0f,IASThsB,EAAK9C,UAAUuuB,kBAAoB,WACjC,GAAI5D,GAAWttB,KAAK2F,IAAI4B,MACpBmJ,EAAS1Q,KAAK0Q,MACd4c,IAAY5c,IACG,SAAb1Q,KAAK+J,KACP2G,EAAO5O,QAAQ,SAAU+H,EAAOiJ,GAC9BjJ,EAAMiJ,MAAQA,CACd,IAAI8X,GAAa/gB,EAAMlE,IAAI2B,KACvBsjB,KACFA,EAAW5E,UAAYlT,KAIP,UAAb9S,KAAK+J,MACZ2G,EAAO5O,QAAQ,SAAU+H,OACJ/D,IAAf+D,EAAMiJ,cACDjJ,GAAMiJ,UAEMhN,IAAf+D,EAAMvC,QACRuC,EAAMvC,MAAQ,SAY1B7B,EAAK9C,UAAUgvB,gBAAkB,WAC/B,GAAIrE,EA2BJ,OAzBiB,SAAbttB,KAAK+J,MACPujB,EAAW7gB,SAASC,cAAc,OAClC4gB,EAAStH,UAAY,SAED,UAAbhmB,KAAK+J,MACZujB,EAAW7gB,SAASC,cAAc,OAClC4gB,EAAStH,UAAY,UAGhBhmB,KAAKyB,SAAS8F,OAAStG,EAAK8V,MAAM/W,KAAKuH,QAE1C+lB,EAAW7gB,SAASC,cAAc,KAClC4gB,EAASsE,KAAO5xB,KAAKuH,MACrB+lB,EAASzgB,OAAS,SAClBygB,EAAStH,UAAYhmB,KAAKgxB,YAAYhxB,KAAKuH,SAI3C+lB,EAAW7gB,SAASC,cAAc,OAClC4gB,EAASuD,gBAAkB7wB,KAAKyB,SAAS8F,MACzC+lB,EAASwD,YAAa,EACtBxD,EAAStH,UAAYhmB,KAAKgxB,YAAYhxB,KAAKuH,QAIxC+lB,GAQT7nB,EAAK9C,UAAUkvB,uBAAyB,WAEtC,GAAIpqB,GAASgF,SAASC,cAAc,SAapC,OAZAjF,GAAOsC,KAAO,SACV/J,KAAK0rB,cACPjkB,EAAOkF,UAAY3M,KAAK8oB,SAAW,sBAAwB,uBAC3DrhB,EAAOmG,MACH,wGAIJnG,EAAOkF,UAAY,uBACnBlF,EAAOmG,MAAQ,IAGVnG,GASThC,EAAK9C,UAAU6rB,eAAiB,WAC9B,GAAI7oB,GAAM3F,KAAK2F,IACXgrB,EAAUlkB,SAASC,cAAc,SACjCtE,EAAQqE,SAASC,cAAc,QACnCikB,GAAQ5Y,MAAM+Z,eAAiB,WAC/BnB,EAAQhkB,UAAY,oBACpBgkB,EAAQjpB,YAAYU,EACpB,IAAIwc,GAAKnY,SAASC,cAAc,KAChCtE,GAAMV,YAAYkd,EAGlB,IAAImN,GAAWtlB,SAASC,cAAc,KACtCqlB,GAASplB,UAAY,kBACrBiY,EAAGld,YAAYqqB,GACfpsB,EAAI8B,OAASzH,KAAK6xB,yBAClBE,EAASrqB,YAAY/B,EAAI8B,QACzB9B,EAAIosB,SAAWA,CAGf,IAAIzD,GAAU7hB,SAASC,cAAc,KACrC4hB,GAAQ3hB,UAAY,kBACpBiY,EAAGld,YAAY4mB,GACf3oB,EAAI2B,MAAQtH,KAAKywB,kBACjBnC,EAAQ5mB,YAAY/B,EAAI2B,OACxB3B,EAAI2oB,QAAUA,CAGd,IAAI0D,GAAcvlB,SAASC,cAAc,KACzCslB,GAAYrlB,UAAY,kBACxBiY,EAAGld,YAAYsqB,GACE,UAAbhyB,KAAK+J,MAAiC,SAAb/J,KAAK+J,OAChCioB,EAAYtqB,YAAY+E,SAAS0M,eAAe,MAChD6Y,EAAYrlB,UAAY,wBAE1BhH,EAAIqsB,YAAcA,CAGlB,IAAIjI,GAAUtd,SAASC,cAAc,KAOrC,OANAqd,GAAQpd,UAAY,kBACpBiY,EAAGld,YAAYqiB,GACfpkB,EAAI4B,MAAQvH,KAAK2xB,kBACjB5H,EAAQriB,YAAY/B,EAAI4B,OACxB5B,EAAIokB,QAAUA,EAEP4G,GAOTlrB,EAAK9C,UAAU2J,QAAU,SAAUC,GACjC,GAAIxC,GAAOwC,EAAMxC,KACb8C,EAASN,EAAMM,QAAUN,EAAM0lB,WAC/BtsB,EAAM3F,KAAK2F,IACXO,EAAOlG,KACPkyB,EAAalyB,KAAK0rB,YActB,IAVI7e,GAAUlH,EAAIiJ,MAAQ/B,GAAUlH,EAAIuC,OAC1B,aAAR6B,EACF/J,KAAK2L,OAAO/F,YAAY2M,UAAUvS,MAEnB,YAAR+J,GACP/J,KAAK2L,OAAO/F,YAAY8M,eAKhB,SAAR3I,GAAmB8C,GAAUlH,EAAIuC,KAAM,CACzC,GAAItC,GAAcM,EAAKyF,OAAO/F,WAC9BA,GAAY2M,UAAUrM,GACtBN,EAAYgN,OACZ3R,EAAKsW,aAAa5R,EAAIuC,KAAM,uBAC5BlI,KAAKwO,gBAAgB7I,EAAIuC,KAAM,WAC7BjH,EAAKyW,gBAAgB/R,EAAIuC,KAAM,uBAC/BtC,EAAYiN,SACZjN,EAAY8M,gBAKhB,GAAY,SAAR3I,IACE8C,GAAUlH,EAAI8B,SACiB,SAA7BvB,EAAKyF,OAAO9K,QAAQgC,MAAgD,SAA7BqD,EAAKyF,OAAO9K,QAAQgC,OAAwC,QAApBgK,EAAOtB,WACtF2mB,EAAY,CACd,GAAIjoB,GAAUsC,EAAM2E,OACpBlR,MAAKmyB,UAAUloB,GAMT,UAARF,GAAoB8C,GAAUlH,EAAI8nB,WACpCztB,KAAK2F,IAAI4B,MAAMye,WAAahmB,KAAKuH,MACjCvH,KAAKgrB,gBAIK,UAARjhB,GAAoB8C,GAAUlH,EAAIuF,SACpClL,KAAK2F,IAAI4B,MAAMye,UAAYrgB,EAAIuF,OAAO3D,MACtCvH,KAAKgrB,eACLhrB,KAAKssB,kBAIP,IAAIgB,GAAW3nB,EAAI4B,KACnB,IAAIsF,GAAUygB,EAEZ,OAAQvjB,GACN,IAAK,OACL,IAAK,SACH/J,KAAKgrB,cAAa,GAClBhrB,KAAKssB,kBACDtsB,KAAKuH,QACP+lB,EAAStH,UAAYhmB,KAAKgxB,YAAYhxB,KAAKuH,OAE7C,MAEF,KAAK,QAEHvH,KAAKgrB,cAAa,GAClBhrB,KAAKssB,iBACL,MAEF,KAAK,UACL,IAAK,YAEHtsB,KAAK2L,OAAO9F,UAAY7F,KAAK2L,OAAON,cACpC,MAEF,KAAK,SACCkB,EAAM2E,SAAYlR,KAAKyB,SAAS8F,OAC9BtG,EAAK8V,MAAM/W,KAAKuH,QAClBoI,OAAOyiB,KAAKpyB,KAAKuH,MAAO,SAG5B,MAEF,KAAK,QAEHvH,KAAKgrB,cAAa,GAClBhrB,KAAKssB,iBACL,MAEF,KAAK,MACL,IAAK,QACHjgB,WAAW,WACTnG,EAAK8kB,cAAa,GAClB9kB,EAAKomB,mBACJ,GAMT,GAAI2B,GAAWtoB,EAAI2B,KACnB,IAAIuF,GAAUohB,EACZ,OAAQlkB,GACN,IAAK,OACL,IAAK,SACH/J,KAAKyqB,cAAa,GAClBzqB,KAAKosB,kBACDpsB,KAAKsH,QACP2mB,EAASjI,UAAYhmB,KAAKgxB,YAAYhxB,KAAKsH,OAE7C,MAEF,KAAK,QACHtH,KAAKyqB,cAAa,GAClBzqB,KAAKixB,gBACLjxB,KAAKosB,kBACLpsB,KAAKssB,iBACL,MAEF,KAAK,UACL,IAAK,YACHtsB,KAAK2L,OAAO9F,UAAY7F,KAAK2L,OAAON,cACpC,MAEF,KAAK,QACHrL,KAAKyqB,cAAa,GAClBzqB,KAAKosB,iBACL,MAEF,KAAK,MACL,IAAK,QACH/f,WAAW,WACTnG,EAAKukB,cAAa,GAClBvkB,EAAKkmB,mBACJ,GAQLvf,GADUlH,EAAI4oB,KACI9nB,YAAsB,SAARsD,GAAoBwC,EAAMkC,gBAC/B3I,IAAjByG,EAAM8lB,QACb9lB,EAAM8lB,QAAkC,IAAvBryB,KAAKirB,WAAa,GACnC1e,EAAM0C,MAAQhO,EAAK+V,gBAAgBrR,EAAIqsB,eAChCE,EAENjE,IACFhtB,EAAKoX,wBAAwB4V,GAC7BA,EAASlmB,SAIPulB,IAAattB,KAAK4tB,OACpB3sB,EAAKoX,wBAAwBiV,GAC7BA,EAASvlB,WAIT8E,GAAUlH,EAAIosB,UAAaG,IAAerlB,GAAUlH,EAAI2oB,SAAWzhB,GAAUlH,EAAIqsB,aAC1E,SAARjoB,GAAoBwC,EAAMkC,UACzBwf,IACFhtB,EAAKoX,wBAAwB4V,GAC7BA,EAASlmB,SAID,WAARgC,GACF/J,KAAKsyB,UAAU/lB,IAQnB9G,EAAK9C,UAAU2vB,UAAY,SAAU/lB,GACnC,GAMImZ,GAAU6M,EAAUC,EAASC,EAE7Bxd,EACAd,EACAnO,EACAD,EAXAgL,EAASxE,EAAMyE,OAASzE,EAAM0E,QAC9BpE,EAASN,EAAMM,QAAUN,EAAM0lB,WAC/B/gB,EAAU3E,EAAM2E,QAChBC,EAAW5E,EAAM4E,SACjBuhB,EAASnmB,EAAMmmB,OACfthB,GAAU,EAEV3P,EAAwC,SAA7BzB,KAAK2L,OAAO9K,QAAQgC,KAK/B8vB,EAAgB3yB,KAAK2L,OAAO5F,eAAeC,MAAM9D,OAAS,EACxDlC,KAAK2L,OAAO5F,eAAeC,OAC1BhG,MACHyuB,EAAYkE,EAAc,GAC1BjE,EAAWiE,EAAcA,EAAczwB,OAAS,EAGpD,IAAc,IAAV6O,GACF,GAAIlE,GAAU7M,KAAK2F,IAAI4B,MAChBvH,KAAKyB,SAAS8F,QAASgF,EAAM2E,SAC5BjQ,EAAK8V,MAAM/W,KAAKuH,SAClBoI,OAAOyiB,KAAKpyB,KAAKuH,MAAO,UACxB6J,GAAU,OAIX,IAAIvE,GAAU7M,KAAK2F,IAAI8B,OAAQ,CAClC,GAAIyqB,GAAalyB,KAAK0rB,YACtB,IAAIwG,EAAY,CACd,GAAIjoB,GAAUsC,EAAM2E,OACpBlR,MAAKmyB,UAAUloB,GACf4C,EAAO9E,QACPqJ,GAAU,QAIX,IAAc,IAAVL,EACHG,GAAWzP,IACbgE,EAAKyM,YAAYygB,GACjBvhB,GAAU,OAGT,IAAc,IAAVL,EACHG,IACFlR,KAAKmyB,UAAUhhB,GACftE,EAAO9E,QACPqJ,GAAU,OAGT,IAAc,IAAVL,GAAgBtP,EACnByP,IACFlR,KAAKwO,gBAAgB3B,GACrBuE,GAAU,OAGT,IAAc,IAAVL,GAAgBtP,EACnByP,IACFzL,EAAK0M,SAASwgB,GACdvhB,GAAU,OAGT,IAAc,IAAVL,GAAgBtP,EACnByP,IAAYC,GACdnR,KAAK4yB,kBACLxhB,GAAU,GAEHF,GAAWC,IAClBnR,KAAK6yB,iBACLzhB,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI2hB,EAAQ,CAEV,GAAII,GAAU9yB,KAAK+yB,WACfD,IACFA,EAAQ/qB,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,IAE1DuE,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI2hB,EAAQ,CAEV,GAAIO,GAAWjzB,KAAKkzB,YAChBD,IACFA,EAASlrB,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,IAE3DuE,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI2hB,IAAWvhB,EAAU,CAEvB,GAAIgiB,GAAcnzB,KAAKozB,iBAAiBvmB,EACpCsmB,IACFnzB,KAAK+H,MAAM/H,KAAKgzB,gBAAgBG,IAElC/hB,GAAU,MAEP,IAAIshB,GAAUvhB,GAAY1P,EAAU,CACvC,GAAIitB,EAAS5F,SAAU,CACrB,GAAIuK,GAAY3E,EAASnD,WACzBiH,GAAUa,EAAYA,EAAU5H,gBAAc3lB,OAE3C,CACH,GAAIH,GAAM+oB,EAASrmB,QACnBmqB,GAAU7sB,EAAI8lB,YAEZ+G,IACFD,EAAW9sB,EAAKkC,kBAAkB6qB,GAClCC,EAAWD,EAAQ/G,YACnB6H,EAAY7tB,EAAKkC,kBAAkB8qB,GAC/BF,GAAYA,YAAoBxG,IACG,GAAjC2C,EAAS9kB,OAAO8G,OAAOxO,QACzBoxB,GAAaA,EAAU1pB,SACzBqL,EAAejV,KAAK2L,OAAON,eAC3B8I,EAAgBua,EAASE,eAEzB+D,EAAc7wB,QAAQ,SAAUoE,GAC9BotB,EAAU1pB,OAAOwK,WAAWlO,EAAMotB,KAEpCtzB,KAAK+H,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,IAErD7M,KAAK2L,OAAOjD,UAAU,aACpB1C,MAAO2sB,EACPxe,cAAeA,EACfE,cAAeif,EACfre,aAAcA,EACdC,aAAclV,KAAK2L,OAAON,wBAM/B,IAAc,IAAV0F,EACH2hB,IAAWvhB,GAEbuU,EAAW1lB,KAAKuzB,gBACZ7N,IACF1lB,KAAK2L,OAAO+C,UAAS,GACrBgX,EAAS3d,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,KAE3DuE,GAAU,IAEFshB,GAAUxhB,GAAWC,GAAY1P,GAEzCikB,EAAW1lB,KAAKuzB,gBACZ7N,IACF3f,EAAiB/F,KAAK2L,OAAO5F,eAC7BA,EAAeyJ,MAAQzJ,EAAeyJ,OAASxP,KAC/C+F,EAAe0J,IAAMiW,EACrB1f,EAAQhG,KAAK2L,OAAOoE,mBAAmBhK,EAAeyJ,MAAOzJ,EAAe0J,KAE5EzP,KAAK2L,OAAOT,OAAOlF,GACnB0f,EAAS3d,MAAM,UAEjBqJ,GAAU,GAEHshB,GAAUvhB,GAAY1P,IAE7BikB,EAAW+I,EAAU8E,gBACjB7N,GAAYA,EAAS9b,SACvBqL,EAAejV,KAAK2L,OAAON,eAC3B8I,EAAgBua,EAASE,eAEzB+D,EAAc7wB,QAAQ,SAAUoE,GAC9Bwf,EAAS9b,OAAOwK,WAAWlO,EAAMwf,KAEnC1lB,KAAK+H,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,IAErD7M,KAAK2L,OAAOjD,UAAU,aACpB1C,MAAO2sB,EACPxe,cAAeA,EACfE,cAAeqR,EACfzQ,aAAcA,EACdC,aAAclV,KAAK2L,OAAON,kBAG9B+F,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI2hB,IAAWvhB,EAAU,CAEvB,GAAIqiB,GAAcxzB,KAAKyzB,aAAa5mB,EAChC2mB,IACFxzB,KAAK+H,MAAM/H,KAAKgzB,gBAAgBQ,IAElCpiB,GAAU,MAEP,IAAIshB,GAAUvhB,GAAY1P,EAAU,CACvCkE,EAAM8oB,EAAUpmB,QAChB,IAAIqrB,GAAU/tB,EAAIyqB,eACdsD,KACFhO,EAAWjgB,EAAKkC,kBAAkB+rB,KAClBhO,EAAS9b,QACpB8b,YAAoBqG,KACjBrG,EAASiO,cACf1e,EAAejV,KAAK2L,OAAON,eAC3B8I,EAAgBua,EAASE,eAEzB+D,EAAc7wB,QAAQ,SAAUoE,GAC9Bwf,EAAS9b,OAAOwK,WAAWlO,EAAMwf,KAEnC1lB,KAAK+H,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,IAErD7M,KAAK2L,OAAOjD,UAAU,aACpB1C,MAAO2sB,EACPxe,cAAeA,EACfE,cAAeqR,EACfzQ,aAAcA,EACdC,aAAclV,KAAK2L,OAAON,uBAM/B,IAAc,IAAV0F,EACP,GAAI2hB,IAAWvhB,EAEbohB,EAAWvyB,KAAK4zB,YACZrB,IACFvyB,KAAK2L,OAAO+C,UAAS,GACrB6jB,EAASxqB,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,KAE3DuE,GAAU,MAEP,KAAKshB,GAAUxhB,GAAWC,GAAY1P,EAEzC8wB,EAAWvyB,KAAK4zB,YACZrB,IACFxsB,EAAiB/F,KAAK2L,OAAO5F,eAC7BA,EAAeyJ,MAAQzJ,EAAeyJ,OAASxP,KAC/C+F,EAAe0J,IAAM8iB,EACrBvsB,EAAQhG,KAAK2L,OAAOoE,mBAAmBhK,EAAeyJ,MAAOzJ,EAAe0J,KAE5EzP,KAAK2L,OAAOT,OAAOlF,GACnBusB,EAASxqB,MAAM,UAEjBqJ,GAAU,MAEP,IAAIshB,GAAUvhB,GAAY1P,EAAU,CAGrC8wB,EADE7D,EAAS5F,SACA4F,EAAS1a,OAAS0a,EAAS1a,OAAO4f,gBAAc9tB,GAGhD4oB,EAASkF,WAEtB,IAAIN,GAAYf,IAAaA,EAASqB,aAAerB,EAAS3oB,OAAOoK,OACjEsf,IAAaA,EAAU1pB,SACzBqL,EAAejV,KAAK2L,OAAON,eAC3B8I,EAAgBua,EAASE,eAEzB+D,EAAc7wB,QAAQ,SAAUoE,GAC9BotB,EAAU1pB,OAAOwK,WAAWlO,EAAMotB,KAEpCtzB,KAAK+H,MAAMtC,EAAK+mB,cAAgBxsB,KAAKgzB,gBAAgBnmB,IAErD7M,KAAK2L,OAAOjD,UAAU,aACpB1C,MAAO2sB,EACPxe,cAAeA,EACfE,cAAeif,EACfre,aAAcA,EACdC,aAAclV,KAAK2L,OAAON,kBAG9B+F,GAAU,EAIVA,IACF7E,EAAMO,iBACNP,EAAMiF,oBASV/L,EAAK9C,UAAUwvB,UAAY,SAAUloB,GACnC,GAAIA,EAAS,CAEX,GAAI7C,GAAQpH,KAAK2F,IAAIif,GAAGne,WACpBD,EAAQY,EAAMX,WACdiE,EAAYlE,EAAMkE,SACtBlE,GAAME,YAAYU,GAGhBpH,KAAK8oB,SACP9oB,KAAKmI,SAAS8B,GAGdjK,KAAKyH,OAAOwC,GAGVA,IAEFzD,EAAMkB,YAAYN,GAClBZ,EAAMkE,UAAYA,IAQtBjF,EAAK0M,SAAW,SAASnM,GACvB,IAAKmK,MAAMhL,QAAQa,GACjB,MAAOP,GAAK0M,UAAUnM,GAGxB,IAAIA,GAASA,EAAM9D,OAAS,EAAG,CAC7B,GAAIusB,GAAYzoB,EAAM,GAClB4D,EAAS6kB,EAAU7kB,OACnB+B,EAAS8iB,EAAU9iB,OACnBkF,EAAa4d,EAAUpE,UAC3B1e,GAAO/F,YAAY8M,aAGnB,IAAIuC,GAAetJ,EAAON,cAC1B5F,GAAKouB,UAAU7tB,EACf,IAAIkP,GAAevJ,EAAON,cAG1BrF,GAAMlE,QAAQ,SAAUoE,GACtBA,EAAK0D,OAAOmjB,QAAQ7mB,KAItByF,EAAOjD,UAAU,eACf1C,MAAOA,EAAMwF,MAAM,GACnB5B,OAAQA,EACRkJ,MAAOjC,EACPoE,aAAcA,EACdC,aAAcA,MAWpBzP,EAAKyM,YAAc,SAASlM,GAC1B,IAAKmK,MAAMhL,QAAQa,GACjB,MAAOP,GAAKyM,aAAalM,GAG3B,IAAIA,GAASA,EAAM9D,OAAS,EAAG,CAC7B,GAAIwsB,GAAW1oB,EAAMA,EAAM9D,OAAS,GAChC0H,EAAS8kB,EAAS9kB,OAClB+B,EAAS+iB,EAAS/iB,MAEtBA,GAAO+C,SAAS/C,EAAO5F,eAAeC,MAGtC,IAAIiP,GAAetJ,EAAON,eACtBwI,EAAY6a,EACZoF,EAAS9tB,EAAMkD,IAAI,SAAUhD,GAC/B,GAAIglB,GAAQhlB,EAAKglB,OAGjB,OAFAthB,GAAOkK,YAAYoX,EAAOrX,GAC1BA,EAAYqX,EACLA,GAIY,KAAjBllB,EAAM9D,OACR4xB,EAAO,GAAG/rB,QAGV4D,EAAOT,OAAO4oB,EAEhB,IAAI5e,GAAevJ,EAAON,cAE1BM,GAAOjD,UAAU,kBACfmL,UAAW6a,EACX1oB,MAAO8tB,EACPlqB,OAAQA,EACRqL,aAAcA,EACdC,aAAcA,MAYpBzP,EAAK9C,UAAUiwB,gBAAkB,SAAUtrB,EAAOC,EAAOwC,GACvD,GAAIkL,GAAejV,KAAK2L,OAAON,eAE3B0oB,EAAU,GAAItuB,GAAKzF,KAAK2L,QAC1BrE,UAAiBxB,IAATwB,EAAsBA,EAAQ,GACtCC,UAAiBzB,IAATyB,EAAsBA,EAAQ,GACtCwC,KAAMA,GAERgqB,GAAQtsB,QAAO,GACfzH,KAAK4J,OAAO8J,aAAaqgB,EAAS/zB,MAClCA,KAAK2L,OAAO/F,YAAY8M,cACxBqhB,EAAQhsB,MAAM,QACd,IAAImN,GAAelV,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOjD,UAAU,qBACpB1C,OAAQ+tB,GACRpgB,WAAY3T,KACZ4J,OAAQ5J,KAAK4J,OACbqL,aAAcA,EACdC,aAAcA,KAWlBzP,EAAK9C,UAAUkwB,eAAiB,SAAUvrB,EAAOC,EAAOwC,GACtD,GAAIkL,GAAejV,KAAK2L,OAAON,eAE3B0oB,EAAU,GAAItuB,GAAKzF,KAAK2L,QAC1BrE,UAAiBxB,IAATwB,EAAsBA,EAAQ,GACtCC,UAAiBzB,IAATyB,EAAsBA,EAAQ,GACtCwC,KAAMA,GAERgqB,GAAQtsB,QAAO,GACfzH,KAAK4J,OAAOkK,YAAYigB,EAAS/zB,MACjCA,KAAK2L,OAAO/F,YAAY8M,cACxBqhB,EAAQhsB,MAAM,QACd,IAAImN,GAAelV,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOjD,UAAU,oBACpB1C,OAAQ+tB,GACRlgB,UAAW7T,KACX4J,OAAQ5J,KAAK4J,OACbqL,aAAcA,EACdC,aAAcA,KAWlBzP,EAAK9C,UAAUqxB,UAAY,SAAU1sB,EAAOC,EAAOwC,GACjD,GAAIkL,GAAejV,KAAK2L,OAAON,eAE3B0oB,EAAU,GAAItuB,GAAKzF,KAAK2L,QAC1BrE,UAAiBxB,IAATwB,EAAsBA,EAAQ,GACtCC,UAAiBzB,IAATyB,EAAsBA,EAAQ,GACtCwC,KAAMA,GAERgqB,GAAQtsB,QAAO,GACfzH,KAAK4J,OAAOlC,YAAYqsB,GACxB/zB,KAAK2L,OAAO/F,YAAY8M,cACxBqhB,EAAQhsB,MAAM,QACd,IAAImN,GAAelV,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOjD,UAAU,eACpB1C,OAAQ+tB,GACRnqB,OAAQ5J,KAAK4J,OACbqL,aAAcA,EACdC,aAAcA,KASlBzP,EAAK9C,UAAUsxB,cAAgB,SAAU1gB,GACvC,GAAID,GAAUtT,KAAK+J,IACnB,IAAIwJ,GAAWD,EAAS,CACtB,GAAI2B,GAAejV,KAAK2L,OAAON,cAC/BrL,MAAKqT,WAAWE,EAChB,IAAI2B,GAAelV,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOjD,UAAU,cACpBxC,KAAMlG,KACNsT,QAASA,EACTC,QAASA,EACT0B,aAAcA,EACdC,aAAcA,MAWpBzP,EAAK9C,UAAU2R,KAAO,SAAU6V,GAC9B,GAAKnqB,KAAK0rB,aAAV,CAIA,GAAIwI,GAAsB,QAAb/J,GAAwB,EAAI,EACrCjlB,EAAqB,SAAblF,KAAK+J,KAAmB,QAAS,OAC7C/J,MAAKuU,YAEL,IAAIE,GAAYzU,KAAK0Q,OACjByjB,EAAen0B,KAAKo0B,SAGxBp0B,MAAK0Q,OAAS1Q,KAAK0Q,OAAOlH,SAG1BxJ,KAAK0Q,OAAO4D,KAAK,SAAUiC,EAAGC,GAC5B,MAAO0d,GAAQ5K,EAAY/S,EAAErR,GAAOsR,EAAEtR,MAExClF,KAAKo0B,UAAsB,GAATF,EAAc,MAAQ,OAExCl0B,KAAK2L,OAAOjD,UAAU,QACpBxC,KAAMlG,KACNyU,UAAWA,EACXD,QAAS2f,EACTvf,UAAW5U,KAAK0Q,OAChBiE,QAAS3U,KAAKo0B,YAGhBp0B,KAAK0U,eAOPjP,EAAK9C,UAAU4oB,UAAY,WAKzB,MAJKvrB,MAAKgU,SACRhU,KAAKgU,OAAS,GAAI+X,GAAW/rB,KAAK2L,QAClC3L,KAAKgU,OAAOsW,UAAUtqB,OAEjBA,KAAKgU,OAAO3L,UASrB5C,EAAKkC,kBAAoB,SAAUkF,GACjC,KAAOA,GAAQ,CACb,GAAIA,EAAO3G,KACT,MAAO2G,GAAO3G,IAEhB2G,GAASA,EAAOpG,aAWpBhB,EAAKouB,UAAY,SAAU7tB,GACzB,IAAKmK,MAAMhL,QAAQa,GAEjB,WADAP,GAAKouB,WAAW7tB,GAIlB,IAAIyoB,GAAYzoB,EAAM,GAClB4D,EAAS6kB,EAAU7kB,OACnBiH,EAAa4d,EAAUpE,UAEvBzgB,GAAO8G,OAAOG,EAAa7K,EAAM9D,QACnC0H,EAAO8G,OAAOG,EAAa7K,EAAM9D,QAAQ6F,QAElC6B,EAAO8G,OAAOG,EAAa,GAClCjH,EAAO8G,OAAOG,EAAa,GAAG9I,QAG9B6B,EAAO7B,SASXtC,EAAK9C,UAAUisB,aAAe,WAC5B,GAAI9b,GAAQ9S,KAAK4J,OAAO8G,OAAO1O,QAAQhC,KACvC,OAAOA,MAAK4J,OAAO8G,OAAOoC,EAAQ,IAAM9S,KAAK4J,OAAOoK,QAQtDvO,EAAK9C,UAAU4wB,cAAgB,WAC7B,GAAI7N,GAAW,KACX/f,EAAM3F,KAAKqI,QACf,IAAI1C,GAAOA,EAAIc,WAAY,CAEzB,GAAIitB,GAAU/tB,CACd,IACE+tB,EAAUA,EAAQtD,gBAClB1K,EAAWjgB,EAAKkC,kBAAkB+rB,SAE7BA,GAAYhO,YAAoBqG,KAAerG,EAASiO,aAEjE,MAAOjO,IAQTjgB,EAAK9C,UAAUixB,UAAY,WACzB,GAAIrB,GAAW,KACX5sB,EAAM3F,KAAKqI,QACf,IAAI1C,GAAOA,EAAIc,WAAY,CAEzB,GAAI+rB,GAAU7sB,CACd,IACE6sB,EAAUA,EAAQ/G,YAClB8G,EAAW9sB,EAAKkC,kBAAkB6qB,SAE7BA,GAAYD,YAAoBxG,KAAewG,EAASoB,aAGjE,MAAOpB,IAQT9sB,EAAK9C,UAAUuwB,WAAa,WAC1B,GAAIzE,GAAY,KACZ9oB,EAAM3F,KAAKqI,QACf,IAAI1C,GAAOA,EAAIc,WAAY,CACzB,GAAI4tB,GAAW1uB,EAAIc,WAAWyS,UAC9BuV,GAAYhpB,EAAKkC,kBAAkB0sB,GAGrC,MAAO5F,IAQThpB,EAAK9C,UAAUowB,UAAY,WACzB,GAAIrE,GAAW,KACX/oB,EAAM3F,KAAKqI,QACf,IAAI1C,GAAOA,EAAIc,WAAY,CACzB,GAAI6tB,GAAU3uB,EAAIc,WAAW8tB,SAE7B,KADA7F,EAAYjpB,EAAKkC,kBAAkB2sB,GAC5BA,GAAY5F,YAAoB3C,KAAe2C,EAASiF,aAC7DW,EAAUA,EAAQlE,gBAClB1B,EAAYjpB,EAAKkC,kBAAkB2sB,GAGvC,MAAO5F,IASTjpB,EAAK9C,UAAUywB,iBAAmB,SAAUnc,GAC1C,GAAItR,GAAM3F,KAAK2F,GAEf,QAAQsR,GACN,IAAKtR,GAAI4B,MACP,GAAIvH,KAAKgpB,cACP,MAAOrjB,GAAI2B,KAGf,KAAK3B,GAAI2B,MACP,GAAItH,KAAK0rB,aACP,MAAO/lB,GAAI8B,MAGf,KAAK9B,GAAI8B,OACP,MAAO9B,GAAIuC,IACb,KAAKvC,GAAIuC,KACP,GAAIvC,EAAIiJ,KACN,MAAOjJ,GAAIiJ,IAGf,SACE,MAAO,QAUbnJ,EAAK9C,UAAU8wB,aAAe,SAAUxc,GACtC,GAAItR,GAAM3F,KAAK2F,GAEf,QAAQsR,GACN,IAAKtR,GAAIiJ,KACP,MAAOjJ,GAAIuC,IACb,KAAKvC,GAAIuC,KACP,GAAIlI,KAAK0rB,aACP,MAAO/lB,GAAI8B,MAGf,KAAK9B,GAAI8B,OACP,GAAIzH,KAAKgpB,cACP,MAAOrjB,GAAI2B,KAGf,KAAK3B,GAAI2B,MACP,IAAKtH,KAAK0rB,aACR,MAAO/lB,GAAI4B,KAEf,SACE,MAAO,QAYb9B,EAAK9C,UAAUqwB,gBAAkB,SAAUzZ,GACzC,GAAI5T,GAAM3F,KAAK2F,GACf,KAAK,GAAIlC,KAAQkC,GACf,GAAIA,EAAIoB,eAAetD,IACjBkC,EAAIlC,IAAS8V,EACf,MAAO9V,EAIb,OAAO,OASTgC,EAAK9C,UAAU+oB,WAAa,WAC1B,MAAoB,SAAb1rB,KAAK+J,MAAgC,UAAb/J,KAAK+J,MAItCtE,EAAK+uB,aACHC,KAAQ,8HAGRhe,OAAU,+EAEVie,MAAS,yEAETC,OAAU,oGAKZlvB,EAAK9C,UAAUiyB,aAAe,SAAU1sB,EAAM8L,GAC1C,GAAI9N,GAAOlG,KACP60B,EAAY3uB,EAAKyF,OAAO9K,QAAQg0B,SACpC,IAAiB,MAAbA,EAAJ,CACIA,EAAU3yB,QAEVgG,EAAK8J,MACDjI,KAAQ,aAGhB,IAAI+qB,GAAa,SAAUrxB,EAAME,GAC7BuC,EAAK8tB,UAAUvwB,EAAME,IAErBoxB,EAAa,SAAUtxB,EAAME,GAC7BuC,EAAK0sB,gBAAgBnvB,EAAME,GAE/BkxB,GAAU/yB,QAAQ,SAAUkzB,GACxB9sB,EAAK8J,MACD1J,KAAM0sB,EAAS1sB,KACfqE,UAAYqoB,EAASroB,WAAa,yBAClCiB,MAAOonB,EAASpnB,MAChBqE,MAAQ+B,EAAS8gB,EAAW7tB,KAAKjH,KAAMg1B,EAAS1tB,MAAO0tB,EAASztB,OAASwtB,EAAW9tB,KAAKjH,KAAMg1B,EAAS1tB,MAAO0tB,EAASztB,aAYpI9B,EAAK9C,UAAU6L,gBAAkB,SAAUqD,EAAQC,GACjD,GAAI5L,GAAOlG,KACPi1B,EAASxvB,EAAK+uB,YACdziB,IAgDJ,IA9CI/R,KAAKyB,SAAS8F,OAChBwK,EAAMC,MACJ1J,KAAM,OACNsF,MAAO,gCACPjB,UAAW,mBAAqB3M,KAAK+J,KACrC2c,UAEIpe,KAAM,OACNqE,UAAW,wBACO,QAAb3M,KAAK+J,KAAiB,uBAAyB,IACpD6D,MAAOqnB,EAAOR,KACdxiB,MAAO,WACL/L,EAAK+tB,cAAc,WAIrB3rB,KAAM,QACNqE,UAAW,yBACO,SAAb3M,KAAK+J,KAAkB,uBAAyB,IACrD6D,MAAOqnB,EAAOP,MACdziB,MAAO,WACL/L,EAAK+tB,cAAc,YAIrB3rB,KAAM,SACNqE,UAAW,0BACO,UAAb3M,KAAK+J,KAAmB,uBAAyB,IACtD6D,MAAOqnB,EAAOxe,OACdxE,MAAO,WACL/L,EAAK+tB,cAAc,aAIrB3rB,KAAM,SACNqE,UAAW,0BACO,UAAb3M,KAAK+J,KAAmB,uBAAyB,IACtD6D,MAAOqnB,EAAON,OACd1iB,MAAO,WACL/L,EAAK+tB,cAAc,eAOzBj0B,KAAK0rB,aAAc,CACrB,GAAIvB,GAAgC,OAAlBnqB,KAAKo0B,UAAsB,OAAQ,KACrDriB,GAAMC,MACJ1J,KAAM,OACNsF,MAAO,2BAA6B5N,KAAK+J,KACzC4C,UAAW,mBAAqBwd,EAChClY,MAAO,WACL/L,EAAKoO,KAAK6V,IAEZzD,UAEIpe,KAAM,YACNqE,UAAW,sBACXiB,MAAO,2BAA6B5N,KAAK+J,KAAO,sBAChDkI,MAAO,WACL/L,EAAKoO,KAAK,UAIZhM,KAAM,aACNqE,UAAW,uBACXiB,MAAO,2BAA6B5N,KAAK+J,KAAM,uBAC/CkI,MAAO,WACL/L,EAAKoO,KAAK,aAOpB,GAAItU,KAAK4J,QAAU5J,KAAK4J,OAAO8hB,aAAc,CACvC3Z,EAAM7P,QAER6P,EAAMC,MACJjI,KAAQ,aAKZ,IAAI2G,GAASxK,EAAK0D,OAAO8G,MACzB,IAAIxK,GAAQwK,EAAOA,EAAOxO,OAAS,GAAI,CACnC,GAAIgzB,KAEI5sB,KAAM,OACNqE,UAAW,uBACXiB,MAAOqnB,EAAOR,KACdxiB,MAAO,WACH/L,EAAK8tB,UAAU,GAAI,GAAI,WAI3B1rB,KAAM,QACNqE,UAAW,wBACXiB,MAAOqnB,EAAOP,MACdziB,MAAO,WACH/L,EAAK8tB,UAAU,UAInB1rB,KAAM,SACNqE,UAAW,yBACXiB,MAAOqnB,EAAOxe,OACdxE,MAAO,WACH/L,EAAK8tB,UAAU,UAInB1rB,KAAM,SACNqE,UAAW,yBACXiB,MAAOqnB,EAAON,OACd1iB,MAAO,WACH/L,EAAK8tB,UAAU,GAAI,GAAI,YAInC9tB,GAAK0uB,aAAaM,GAAe,GACjCnjB,EAAMC,MACF1J,KAAM,SACNsF,MAAO,wEACPkZ,aAAc,8CACdna,UAAW,oBACXsF,MAAO,WACH/L,EAAK8tB,UAAU,GAAI,GAAI,SAE3BtN,QAASwO,IAOjB,GAAIC,KAEI7sB,KAAM,OACNqE,UAAW,uBACXiB,MAAOqnB,EAAOR,KACdxiB,MAAO,WACH/L,EAAK0sB,gBAAgB,GAAI,GAAI,WAIjCtqB,KAAM,QACNqE,UAAW,wBACXiB,MAAOqnB,EAAOP,MACdziB,MAAO,WACH/L,EAAK0sB,gBAAgB,UAIzBtqB,KAAM,SACNqE,UAAW,yBACXiB,MAAOqnB,EAAOxe,OACdxE,MAAO,WACH/L,EAAK0sB,gBAAgB,UAIzBtqB,KAAM,SACNqE,UAAW,yBACXiB,MAAOqnB,EAAON,OACd1iB,MAAO,WACH/L,EAAK0sB,gBAAgB,GAAI,GAAI,YAIzC1sB,GAAK0uB,aAAaO,GAAe,GACjCpjB,EAAMC,MACJ1J,KAAM,SACNsF,MAAO,mEACPkZ,aAAc,8CACdna,UAAW,oBACXsF,MAAO,WACL/L,EAAK0sB,gBAAgB,GAAI,GAAI,SAE/BlM,QAASyO,IAGPn1B,KAAKyB,SAAS6F,QAEhByK,EAAMC,MACJ1J,KAAM,YACNsF,MAAO,gCACPjB,UAAW,uBACXsF,MAAO,WACLxM,EAAKyM,YAAYhM,MAKrB6L,EAAMC,MACJ1J,KAAM,SACNsF,MAAO,+BACPjB,UAAW,oBACXsF,MAAO,WACLxM,EAAK0M,SAASjM,OAMX,GAAIV,GAAYuM,GAAQK,MAAON,IACrCO,KAAKR,EAAQ7R,KAAK2L,OAAOxE,UAShC1B,EAAK9C,UAAUgoB,SAAW,SAASpjB,GACjC,MAAIA,aAAiB4I,OACZ,QAEL5I,YAAiB3F,QACZ,SAEY,gBAAX,IAA0D,gBAA5B5B,MAAKitB,YAAY1lB,GAChD,SAGF,QAUT9B,EAAK9C,UAAUsqB,YAAc,SAASnM,GACpC,GAAIsU,GAAQtU,EAAImL,cACZoJ,EAAM3e,OAAOoK,GACbwU,EAAWhb,WAAWwG,EAE1B,OAAW,IAAPA,EACK,GAES,QAATsU,EACA,KAES,QAATA,GAGS,SAATA,IAGCG,MAAMF,IAASE,MAAMD,GAItBxU,EAHAuU,IAaX5vB,EAAK9C,UAAUquB,YAAc,SAAU1oB,GACrC,GAAoB,gBAATA,GACT,MAAOqO,QAAOrO,EAGd,IAAIktB,GAAc7e,OAAOrO,GACpB8N,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,MAAO,WACfA,QAAQ,KAAM,UACdA,QAAQ,KAAM,UAEftV,EAAOwC,KAAKC,UAAUiyB,GACtBC,EAAO30B,EAAKqa,UAAU,EAAGra,EAAKoB,OAAS,EAI3C,QAH0C,IAAtClC,KAAK2L,OAAO9K,QAAQ60B,gBACtBD,EAAOx0B,EAAKkV,mBAAmBsf,IAE1BA,GAUXhwB,EAAK9C,UAAUwqB,cAAgB,SAAUwI,GACvC,GAAI70B,GAAO,IAAMd,KAAK41B,YAAYD,GAAe,GAGjD,OAFkB10B,GAAKmC,MAAMtC,GAGxBsV,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,iBAAkB,KAC1BA,QAAQ,SAAU,MAYzB3Q,EAAK9C,UAAUizB,YAAc,SAAUttB,GAIrC,IAFA,GAAIutB,GAAU,GACV5wB,EAAI,EACDA,EAAIqD,EAAKpG,QAAQ,CACtB,GAAIzB,GAAI6H,EAAKkN,OAAOvQ,EACX,OAALxE,EACFo1B,GAAW,MAEC,MAALp1B,GACPo1B,GAAWp1B,EACXwE,IAEAxE,EAAI6H,EAAKkN,OAAOvQ,GACN,KAANxE,IAAwC,GAA5B,aAAauB,QAAQvB,KACnCo1B,GAAW,MAEbA,GAAWp1B,GAGXo1B,GADY,KAALp1B,EACI,MAGAA,EAEbwE,IAGF,MAAO4wB,GAIT,IAAI9J,GAAaxC,EAAkB9jB,EAEnC5F,GAAOD,QAAU6F,GAKZ,SAAS5F,EAAQD,GAOtBC,EAAOD,QAAU,QAAS0pB,GAAa/S,EAAGC,GACzC,YACA,IAeCsf,GAAQC,EAfLC,EAAK,8EACRC,EAAM,iBACNC,EAAM,iHACNC,EAAM,iBAENlxB,EAAI,SAASmxB,GAAK,MAAO9M,GAAY+M,cAAgB,GAAKD,GAAGnK,eAAiB,GAAKmK,GAEnFE,EAAIrxB,EAAEsR,GAAGH,QAAQ6f,EAAK,KAAO,GAC7BM,EAAItxB,EAAEuR,GAAGJ,QAAQ6f,EAAK,KAAO,GAE7BO,EAAKF,EAAElgB,QAAQ4f,EAAI,UAAU5f,QAAQ,MAAM,IAAIA,QAAQ,MAAM,IAAIqB,MAAM,MACvEgf,EAAKF,EAAEngB,QAAQ4f,EAAI,UAAU5f,QAAQ,MAAM,IAAIA,QAAQ,MAAM,IAAIqB,MAAM,MAEvEif,EAAKC,SAASL,EAAE3gB,MAAMwgB,GAAM,KAAsB,IAAdK,EAAGt0B,QAAgBo0B,EAAE3gB,MAAMugB,IAAQphB,KAAK1R,MAAMkzB,GAClFM,EAAKD,SAASJ,EAAE5gB,MAAMwgB,GAAM,KAAOO,GAAMH,EAAE5gB,MAAMugB,IAAQphB,KAAK1R,MAAMmzB,IAAM,IAG3E,IAAIK,EAAI,CACP,GAAKF,EAAKE,EAAO,OAAQ,CACpB,IAAKF,EAAKE,EAAO,MAAO,GAG9B,IAAI,GAAIC,GAAK,EAAGC,EAAK/qB,KAAKE,IAAIuqB,EAAGt0B,OAAQu0B,EAAGv0B,QAAS20B,EAAOC,EAAMD,IAAQ,CAKzE,GAHAf,IAAWU,EAAGK,IAAS,IAAIlhB,MApBrB,OAoBmC2E,WAAWkc,EAAGK,KAAUL,EAAGK,IAAS,EAC7Ed,IAAWU,EAAGI,IAAS,IAAIlhB,MArBrB,OAqBmC2E,WAAWmc,EAAGI,KAAUJ,EAAGI,IAAS,EAEzEtB,MAAMO,KAAYP,MAAMQ,GAAW,MAAQR,OAAMO,GAAW,GAAK,CAMrE,UAJgBA,UAAkBC,KACjCD,GAAU,GACVC,GAAU,IAEPD,EAASC,EAAU,OAAQ,CAC/B,IAAID,EAASC,EAAU,MAAO,GAE/B,MAAO,KAMH,SAASl2B,EAAQD,EAASM,GAE/B,YASA,SAASqpB,GAAkB9jB,GAQzB,QAASsmB,GAAYpgB,GAEnB3L,KAAK2L,OAASA,EACd3L,KAAK2F,OA+MP,MA5MAomB,GAAWppB,UAAY,GAAI8C,GAM3BsmB,EAAWppB,UAAU0F,OAAS,WAE5B,GAAI1C,GAAM3F,KAAK2F,GAEf,IAAIA,EAAIif,GACN,MAAOjf,GAAIif,EAGb5kB,MAAKwpB,oBAGL,IAAIuN,GAAWtqB,SAASC,cAAc,KAMtC,IALAqqB,EAAS7wB,KAAOlG,KAChB2F,EAAIif,GAAKmS,EAIwB,SAA7B/2B,KAAK2L,OAAO9K,QAAQgC,KAAiB,CAEvC8C,EAAIwoB,OAAS1hB,SAASC,cAAc,KAGpC,IAAI2hB,GAAS5hB,SAASC,cAAc,KACpC/G,GAAI0oB,OAASA,CACb,IAAInmB,GAAOuE,SAASC,cAAc,SAClCxE,GAAK6B,KAAO,SACZ7B,EAAKyE,UAAY,yBACjBzE,EAAK0F,MAAQ,0CACbjI,EAAIuC,KAAOA,EACXmmB,EAAO3mB,YAAY/B,EAAIuC,MAIzB,GAAI8uB,GAAWvqB,SAASC,cAAc,MAClCuqB,EAAUxqB,SAASC,cAAc,MASrC,OARAuqB,GAAQjR,UAAY,UACpBiR,EAAQtqB,UAAY,sBACpBqqB,EAAStvB,YAAYuvB,GACrBtxB,EAAIkf,GAAKmS,EACTrxB,EAAI2C,KAAO2uB,EAEXj3B,KAAKgK,YAEE+sB,GAMThL,EAAWppB,UAAUqH,UAAY,WAC/B,GAAIrE,GAAM3F,KAAK2F,IACXqxB,EAAWrxB,EAAIkf,EACfmS,KACFA,EAASjf,MAAMmf,YAAiC,GAAlBl3B,KAAKirB,WAAkB,GAAM,KAI7D,IAAIgM,GAAUtxB,EAAI2C,IACd2uB,KACFA,EAAQjR,UAAY,UAAYhmB,KAAK4J,OAAOG,KAAO,IAKrD,IAAIgtB,GAAWpxB,EAAIif,EACd5kB,MAAK2zB,YAYHhuB,EAAIif,GAAG1L,aACNvT,EAAIwoB,QACN4I,EAASrvB,YAAY/B,EAAIwoB,QAEvBxoB,EAAI0oB,QACN0I,EAASrvB,YAAY/B,EAAI0oB,QAE3B0I,EAASrvB,YAAYsvB,IAlBnBrxB,EAAIif,GAAG1L,aACLvT,EAAIwoB,QACN4I,EAASrwB,YAAYf,EAAIwoB,QAEvBxoB,EAAI0oB,QACN0I,EAASrwB,YAAYf,EAAI0oB,QAE3B0I,EAASrwB,YAAYswB,KAqB3BjL,EAAWppB,UAAUgxB,UAAY,WAC/B,MAAqC,IAA7B3zB,KAAK4J,OAAO8G,OAAOxO,QAS7B6pB,EAAWppB,UAAU6L,gBAAkB,SAAUqD,EAAQC,GACvD,GAAI5L,GAAOlG,KACPi1B,EAASxvB,EAAK+uB,YACdU,IAEI5sB,KAAM,OACNqE,UAAW,uBACXiB,MAAOqnB,EAAOR,KACdxiB,MAAO,WACH/L,EAAK8tB,UAAU,GAAI,GAAI,WAI3B1rB,KAAM,QACNqE,UAAW,wBACXiB,MAAOqnB,EAAOP,MACdziB,MAAO,WACH/L,EAAK8tB,UAAU,UAInB1rB,KAAM,SACNqE,UAAW,yBACXiB,MAAOqnB,EAAOxe,OACdxE,MAAO,WACH/L,EAAK8tB,UAAU,UAInB1rB,KAAM,SACNqE,UAAW,yBACXiB,MAAOqnB,EAAON,OACd1iB,MAAO,WACH/L,EAAK8tB,UAAU,GAAI,GAAI,YAInC9tB,GAAK0uB,aAAaM,GAAe,GAetB,GAAI1vB,KAXX8C,KAAQ,UACRsF,MAAS,uDACTkZ,aAAgB,8CAChBna,UAAa,oBACbsF,MAAS,WACP/L,EAAK8tB,UAAU,GAAI,GAAI,SAEzBtN,QAAWwO,KAIoB9iB,MAAON,IACrCO,KAAKR,EAAQ7R,KAAK2L,OAAOxE,UAOhC4kB,EAAWppB,UAAU2J,QAAU,SAAUC,GACvC,GAAIxC,GAAOwC,EAAMxC,KACb8C,EAASN,EAAMM,QAAUN,EAAM0lB,WAC/BtsB,EAAM3F,KAAK2F,GAcf,IAVIkH,GADOlH,EAAIuC,OAED,aAAR6B,EACF/J,KAAK2L,OAAO/F,YAAY2M,UAAUvS,KAAK4J,QAExB,YAARG,GACP/J,KAAK2L,OAAO/F,YAAY8M,eAKhB,SAAR3I,GAAmB8C,GAAUlH,EAAIuC,KAAM,CACzC,GAAItC,GAAc5F,KAAK2L,OAAO/F,WAC9BA,GAAY2M,UAAUvS,KAAK4J,QAC3BhE,EAAYgN,OACZ3R,EAAKsW,aAAa5R,EAAIuC,KAAM,uBAC5BlI,KAAKwO,gBAAgB7I,EAAIuC,KAAM,WAC7BjH,EAAKyW,gBAAgB/R,EAAIuC,KAAM,uBAC/BtC,EAAYiN,SACZjN,EAAY8M,gBAIJ,WAAR3I,GACF/J,KAAKsyB,UAAU/lB,IAIZwf,EAjOT,GAAI9qB,GAAOf,EAAoB,GAC3BsF,EAActF,EAAoB,EAmOtCL,GAAOD,QAAU2pB,GAKZ,SAAS1pB,EAAQD,EAASM,GAE/B,YAYA,SAASwF,GAAa9E,EAAW8B,EAAOy0B,EAASC,GA0C/C,IAAK,GAxCDC,IACF/0B,MACEgG,KAAQ,OACRsF,MAAS,6BACTqE,MAAS,WACPmlB,EAAS,UAGbE,MACEhvB,KAAQ,OACRsF,MAAS,wBACTqE,MAAS,WACPmlB,EAAS,UAGb9uB,MACEA,KAAQ,OACRsF,MAAS,8BACTqE,MAAS,WACPmlB,EAAS,UAGb7I,MACEjmB,KAAQ,OACRsF,MAAS,wBACTqE,MAAS,WACPmlB,EAAS,UAGbG,MACEjvB,KAAQ,OACRsF,MAAS,sBACTqE,MAAS,WACPmlB,EAAS,WAMXrlB,KACK9M,EAAI,EAAGA,EAAIvC,EAAMR,OAAQ+C,IAAK,CACrC,GAAIpC,GAAOH,EAAMuC,GACbmhB,EAAOiR,EAAex0B,EAC1B,KAAKujB,EACH,KAAM,IAAIrlB,OAAM,iBAAmB8B,EAAO,IAG5CujB,GAAKzZ,UAAY,yBAA4BwqB,GAAWt0B,EAAQ,uBAAyB,IACzFkP,EAAMC,KAAKoU,GAIb,GAAIoR,GAAcH,EAAeF,EACjC,KAAKK,EACH,KAAM,IAAIz2B,OAAM,iBAAmBo2B,EAAU,IAE/C,IAAIM,GAAeD,EAAYlvB,KAG3BovB,EAAMjrB,SAASC,cAAc,SACjCgrB,GAAI3tB,KAAO,SACX2tB,EAAI/qB,UAAY,wCAChB+qB,EAAI1R,UAAYyR,EAAe,YAC/BC,EAAI9pB,MAAQ,qBACZ8pB,EAAI9qB,QAAU,WACD,GAAIpH,GAAYuM,GACtBM,KAAKqlB,GAGZ,IAAIlxB,GAAQiG,SAASC,cAAc,MACnClG,GAAMmG,UAAY,mBAClBnG,EAAMuR,MAAM4f,SAAW,WACvBnxB,EAAMkB,YAAYgwB,GAElB92B,EAAU8G,YAAYlB,GAEtBxG,KAAK2F,KACH/E,UAAWA,EACX82B,IAAKA,EACLlxB,MAAOA,GA3FX,GAAIhB,GAActF,EAAoB,EAkGtCwF,GAAa/C,UAAUoF,MAAQ,WAC7B/H,KAAK2F,IAAI+xB,IAAI3vB,SAMfrC,EAAa/C,UAAUI,QAAU,WAC3B/C,KAAK2F,KAAO3F,KAAK2F,IAAIa,OAASxG,KAAK2F,IAAIa,MAAMC,YAC/CzG,KAAK2F,IAAIa,MAAMC,WAAWC,YAAY1G,KAAK2F,IAAIa,OAEjDxG,KAAK2F,IAAM,MAGb9F,EAAOD,QAAU8F,GAKZ,SAAS7F,EAAQD,EAASM,GAE/B,YAEA,IAAI03B,GAAM13B,EAAoB,IAC1BwF,EAAexF,EAAoB,IACnCe,EAAOf,EAAoB,GAG3BuC,IA4BJA,GAASyB,OAAS,SAAUtD,EAAWC,GAErCA,EAAUA,MACVb,KAAKa,QAAUA,EAGXA,EAAQg3B,YACV73B,KAAK63B,YAAcnhB,OAAO7V,EAAQg3B,aAGlC73B,KAAK63B,YAAc,CAIrB,IAAIC,GAAOj3B,EAAQ+2B,IAAM/2B,EAAQ+2B,IAAMA,CAevC,IAXA53B,KAAK6C,KAAwB,QAAhBhC,EAAQgC,KAAkB,OAAS,OAC/B,QAAb7C,KAAK6C,UAEa,KAATi1B,IACT93B,KAAK6C,KAAO,OACZzB,QAAQC,KAAK,iKAKjBrB,KAAK+3B,MAAQl3B,EAAQk3B,OApDH,uBAAA,yBAqDd/3B,KAAK+3B,OAA2BD,EAClC,IACE53B,EAAoB,IAEtB,MAAOqC,GACLnB,QAAQD,MAAMoB,GAIlB,GAAI6H,GAAKpK,IACTA,MAAKY,UAAYA,EACjBZ,KAAK2F,OACL3F,KAAKg4B,cAAYlyB,GACjB9F,KAAKi4B,aAAWnyB,GAChB9F,KAAK4E,eAAiB,KAGtB5E,KAAK2G,mBAAqB1F,EAAK+F,SAAShH,KAAK8E,SAASmC,KAAKjH,MAAOA,KAAK4C,mBAEvE5C,KAAK4R,MAAQhR,EAAUs3B,YACvBl4B,KAAKuK,OAAS3J,EAAU4J,aAExBxK,KAAKwG,MAAQiG,SAASC,cAAc,OACpC1M,KAAKwG,MAAMmG,UAAY,8BAAgC3M,KAAKa,QAAQgC,KACpE7C,KAAKwG,MAAMoG,QAAU,SAAUL,GAE7BA,EAAMO,kBAER9M,KAAKwG,MAAMyG,UAAY,SAAUV,GAC/BnC,EAAGgE,WAAW7B,IAIhBvM,KAAKkI,KAAOuE,SAASC,cAAc,OACnC1M,KAAKkI,KAAKyE,UAAY,kBACtB3M,KAAKwG,MAAMkB,YAAY1H,KAAKkI,KAG5B,IAAIiwB,GAAe1rB,SAASC,cAAc,SAC1CyrB,GAAapuB,KAAO,SACpBouB,EAAaxrB,UAAY,oBACzBwrB,EAAavqB,MAAQ,qEACrB5N,KAAKkI,KAAKR,YAAYywB,GACtBA,EAAavrB,QAAU,WACrB,IACExC,EAAGguB,SACHhuB,EAAGvB,YAEL,MAAOtG,GACL6H,EAAG/F,SAAS9B,IAKhB,IAAI81B,GAAgB5rB,SAASC,cAAc,SAC3C2rB,GAActuB,KAAO,SACrBsuB,EAAc1rB,UAAY,qBAC1B0rB,EAAczqB,MAAQ,4DACtB5N,KAAKkI,KAAKR,YAAY2wB,GACtBA,EAAczrB,QAAU,WACtB,IACExC,EAAGkuB,UACHluB,EAAGvB,YAEL,MAAOtG,GACL6H,EAAG/F,SAAS9B,KAKZvC,KAAKa,SAAWb,KAAKa,QAAQ6B,OAAS1C,KAAKa,QAAQ6B,MAAMR,SAC3DlC,KAAK6G,aAAe,GAAInB,GAAa1F,KAAKkI,KAAMlI,KAAKa,QAAQ6B,MAAO1C,KAAKa,QAAQgC,KAAM,SAAkBA,GAEvGuH,EAAGtH,QAAQD,GACXuH,EAAGvD,aAAakB,UAIpB,IAAIwwB,MACAC,EAAcx4B,KAAKa,QAAQa,mBACO,aAA5B1B,KAAKa,QAAQa,cACnB1B,KAAKa,QAAQa,WAAW62B,EAQ5B,IANAv4B,KAAKmH,QAAUsF,SAASC,cAAc,OACtC1M,KAAKmH,QAAQwF,UAAY,mBACzB3M,KAAKwG,MAAMkB,YAAY1H,KAAKmH,SAE5BnH,KAAKY,UAAU8G,YAAY1H,KAAKwG,OAEf,QAAbxG,KAAK6C,KAAgB,CACvB7C,KAAKy4B,UAAYhsB,SAASC,cAAc,OACxC1M,KAAKy4B,UAAU1gB,MAAMxN,OAAS,OAC9BvK,KAAKy4B,UAAU1gB,MAAMnG,MAAQ,OAC7B5R,KAAKmH,QAAQO,YAAY1H,KAAKy4B,UAE9B,IAAIT,GAAYF,EAAKY,KAAK14B,KAAKy4B,UAC/BT,GAAUW,gBAAkBC,EAAAA,EAC5BZ,EAAUa,SAAS74B,KAAK+3B,OACxBC,EAAUc,YAAaC,SAAUP,IACjCR,EAAUgB,oBAAmB,GAC7BhB,EAAUiB,YAAY,IACtBjB,EAAUkB,aAAap2B,QAAQ,iBAC/Bk1B,EAAUkB,aAAaC,WAAWn5B,KAAK63B,aACvCG,EAAUkB,aAAaE,gBAAe,GACtCpB,EAAUkB,aAAaG,gBAAe,GACtCrB,EAAUsB,SAASC,QAAQ,SAAU,MACrCvB,EAAUsB,SAASC,QAAQ,YAAa,MACxCv5B,KAAKg4B,UAAYA,EAGZh4B,KAAK+G,eAAe,WACvBnF,OAAO43B,eAAex5B,KAAM,UAC1BiD,IAAK,WAEH,MADA7B,SAAQC,KAAK,sDACN+I,EAAG4tB,WAEZh1B,IAAK,SAAUg1B,GACb52B,QAAQC,KAAK,sDACb+I,EAAG4tB,UAAYA,IAKrB,IAAIyB,GAAYhtB,SAASC,cAAc,IACvC+sB,GAAU/xB,YAAY+E,SAAS0M,eAAe,mBAC9CsgB,EAAU7H,KAAO,sBACjB6H,EAAU5sB,OAAS,SACnB4sB,EAAU9sB,UAAY,uBACtB8sB,EAAU7sB,QAAU,WAIlB+C,OAAOyiB,KAAKqH,EAAU7H,KAAM6H,EAAU5sB,SAExC7M,KAAKkI,KAAKR,YAAY+xB,GAGtBzB,EAAU0B,GAAG,SAAU15B,KAAK6I,UAAU5B,KAAKjH,WAExC,CAEH,GAAIi4B,GAAWxrB,SAASC,cAAc,WACtCurB,GAAStrB,UAAY,kBACrBsrB,EAASnH,YAAa,EACtB9wB,KAAKmH,QAAQO,YAAYuwB,GACzBj4B,KAAKi4B,SAAWA,EAChBj4B,KAAKi4B,SAASc,SAAWP,EAGK,OAA1Bx4B,KAAKi4B,SAASlrB,QAChB/M,KAAKi4B,SAASlrB,QAAU/M,KAAK6I,UAAU5B,KAAKjH,MAI5CA,KAAKi4B,SAASjrB,SAAWhN,KAAK6I,UAAU5B,KAAKjH,MAIjDA,KAAKuE,UAAUvE,KAAKa,QAAQ2D,SAS9B/B,EAASoG,UAAY,WAKnB,GAHA7I,KAAK2G,qBAGD3G,KAAKa,QAAQW,SACf,IACExB,KAAKa,QAAQW,WAEf,MAAOe,GACLnB,QAAQD,MAAM,+BAAgCoB,KAUpDE,EAAS2L,WAAa,SAAU7B,GAC9B,GAAIwE,GAASxE,EAAMyE,OAASzE,EAAM0E,QAC9BG,GAAU,CAEA,MAAVL,GAAiBxE,EAAM2E,UACrB3E,EAAM4E,UACRnR,KAAKs4B,UACLt4B,KAAK6I,cAGL7I,KAAKo4B,SACLp4B,KAAK6I,aAEPuI,GAAU,GAGRA,IACF7E,EAAMO,iBACNP,EAAMiF,oBAOV/O,EAASM,QAAU,WAEb/C,KAAKg4B,YACPh4B,KAAKg4B,UAAUj1B,UACf/C,KAAKg4B,UAAY,MAGfh4B,KAAKwG,OAASxG,KAAKY,WAAaZ,KAAKwG,MAAMC,YAAczG,KAAKY,WAChEZ,KAAKY,UAAU8F,YAAY1G,KAAKwG,OAG9BxG,KAAK6G,eACP7G,KAAK6G,aAAa9D,UAClB/C,KAAK6G,aAAe,MAGtB7G,KAAKi4B,SAAW,KAEhBj4B,KAAK2G,mBAAqB,MAM5BlE,EAAS61B,QAAU,WACjB,GAAIx3B,GAAOd,KAAKiD,MACZqF,EAAOhF,KAAKC,UAAUzC,EAC1Bd,MAAKkD,QAAQoF,IAMf7F,EAAS21B,OAAS,WAChB,GAAIt3B,GAAOd,KAAKiD,MACZqF,EAAOhF,KAAKC,UAAUzC,EAAM,KAAMd,KAAK63B,YAC3C73B,MAAKkD,QAAQoF,IAMf7F,EAASsF,MAAQ,WACX/H,KAAKi4B,UACPj4B,KAAKi4B,SAASlwB,QAEZ/H,KAAKg4B,WACPh4B,KAAKg4B,UAAUjwB,SAOnBtF,EAASk3B,OAAS,WAChB,GAAI35B,KAAKg4B,UAAW,CAElBh4B,KAAKg4B,UAAU2B,QADH,KAShBl3B,EAASO,IAAM,SAASlC,GACtBd,KAAKkD,QAAQI,KAAKC,UAAUzC,EAAM,KAAMd,KAAK63B,eAO/Cp1B,EAASQ,IAAM,WACb,GACInC,GADAwH,EAAOtI,KAAKqD,SAGhB,KACEvC,EAAOG,EAAKmC,MAAMkF,GAEpB,MAAO/F,GAEL+F,EAAOrH,EAAKoU,SAAS/M,GAGrBxH,EAAOG,EAAKmC,MAAMkF,GAGpB,MAAOxH,IAOT2B,EAASY,QAAU,WACjB,MAAIrD,MAAKi4B,SACAj4B,KAAKi4B,SAAS1wB,MAEnBvH,KAAKg4B,UACAh4B,KAAKg4B,UAAUnwB,WAEjB,IAOTpF,EAASS,QAAU,SAASC,GAC1B,GAAImF,EAYJ,IATEA,GADiC,IAA/BtI,KAAKa,QAAQ60B,cACRz0B,EAAKkV,mBAAmBhT,GAGxBA,EAGLnD,KAAKi4B,WACPj4B,KAAKi4B,SAAS1wB,MAAQe,GAEpBtI,KAAKg4B,UAAW,CAElB,GAAI4B,GAAmB55B,KAAKa,QAAQW,QACpCxB,MAAKa,QAAQW,SAAW,KAExBxB,KAAKg4B,UAAU/O,SAAS3gB,GAAO,GAE/BtI,KAAKa,QAAQW,SAAWo4B,EAI1B55B,KAAK8E,YAOPrC,EAASqC,SAAW,WAEd9E,KAAK2F,IAAIk0B,mBACX75B,KAAK2F,IAAIk0B,iBAAiBpzB,WAAWC,YAAY1G,KAAK2F,IAAIk0B,kBAC1D75B,KAAK2F,IAAIk0B,iBAAmB,KAE5B75B,KAAKmH,QAAQ4Q,MAAM+hB,aAAe,GAClC95B,KAAKmH,QAAQ4Q,MAAMgiB,cAAgB,GAGrC,IAEIj5B,GAFAk5B,GAAa,EACb/wB,IAEJ,KACEnI,EAAOd,KAAKiD,MACZ+2B,GAAa,EAEf,MAAOz3B,IAKP,GAAIy3B,GAAch6B,KAAK4E,eAAgB,CACzB5E,KAAK4E,eAAe9D,KAE9BmI,EAASjJ,KAAK4E,eAAeqE,OAAOC,IAAI,SAAU/H,GAChD,MAAOF,GAAKkI,mBAAmBhI,MAKrC,GAAI8H,EAAO/G,OAAS,EAAG,CAGrB,GADY+G,EAAO/G,OAxbN,EAybF,CACT+G,EAASA,EAAOuC,MAAM,EA1bX,EA2bX,IAAIyuB,GAASj6B,KAAK4E,eAAeqE,OAAO/G,OA3b7B,CA4bX+G,GAAO+I,KAAK,IAAMioB,EAAS,oBAG7B,GAAIJ,GAAmBptB,SAASC,cAAc,MAC9CmtB,GAAiB7T,UAAY,gDAEzB/c,EAAOC,IAAI,SAAU/H,GAUnB,MAAO,kEARc,gBAAVA,GACC,wBAA0BA,EAAQ,cAGlC,OAASA,EAAMkI,SAAW,YACvBlI,EAAM2I,QAAU,SAGqD,UACnFoM,KAAK,IACR,mBAGJlW,KAAK2F,IAAIk0B,iBAAmBA,EAC5B75B,KAAKwG,MAAMkB,YAAYmyB,EAEvB,IAAItvB,GAASsvB,EAAiBrvB,YAC9BxK,MAAKmH,QAAQ4Q,MAAM+hB,cAAiBvvB,EAAU,KAC9CvK,KAAKmH,QAAQ4Q,MAAMgiB,cAAgBxvB,EAAS,KAI9C,GAAIvK,KAAKg4B,UAAW,CAElBh4B,KAAKg4B,UAAU2B,QADH,KAMhB95B,EAAOD,UAEHiD,KAAM,OACNoB,MAAOxB,EACPkB,KAAM,OACNQ,KAAM1B,EAAS21B,SAGfv1B,KAAM,OACNoB,MAAOxB,EACPkB,KAAM,OACNQ,KAAM1B,EAAS21B,UAOd,SAASv4B,EAAQD,EAASM,GAE/B,GAAI03B,EACJ,IAAIjoB,OAAOioB,IAETA,EAAMjoB,OAAOioB,QAGb,KAEEA,EAAM13B,GAAsB,WAAkC,GAAImC,GAAI,GAAItB,OAAM,6BAA8D,MAA7BsB,GAAEC,KAAO,mBAA0BD,MAGpJnC,EAAoB,IACpBA,EAAoB,IAEtB,MAAOqC,IAMT1C,EAAOD,QAAUg4B,GAKZ,SAAS/3B,EAAQD,EAASM,GAE/B03B,IAAI93B,OAAO,iCAAiC,UAAU,UAAU,SAAS,cAAc,iCAAkC,SAASo6B,EAAUt6B,EAASC,GACrJ,YAEA,IAAIs6B,GAAMD,EAAS,cACfE,EAAqBF,EAAS,0BAA0BE,mBAExDC,EAAqB,WACrBr6B,KAAKs6B,QACD9qB,QAEQyR,MAAQ,WACRsZ,MAAQ,gDAERtZ,MAAQ,SACRsZ,MAAQ,IACRhpB,KAAQ,WAER0P,MAAQ,mBACRsZ,MAAQ,yBAERtZ,MAAQ,mBACRsZ,MAAQ,oDAERtZ,MAAQ,4BACRsZ,MAAQ,sBAERtZ,MAAQ,kBACRsZ,MAAQ,uCAERtZ,MAAQ,kBACRsZ,MAAQ,cAERtZ,MAAQ,eACRsZ,MAAQ,UAERtZ,MAAQ,eACRsZ,MAAQ,YAERtZ,MAAQ,OACRsZ,MAAQ,SAGhB5F,SAEQ1T,MAAQ,2BACRsZ,MAAQ,uDAERtZ,MAAQ,SACRsZ,MAAQ,cAERtZ,MAAQ,SACRsZ,MAAQ,IACRhpB,KAAQ,UAER0P,MAAQ,SACRsZ,MAAQ,GACRhpB,KAAQ,WAOxB4oB,GAAIK,SAASH,EAAoBD,GAEjCx6B,EAAQy6B,mBAAqBA,IAG7BzC,IAAI93B,OAAO,mCAAmC,UAAU,UAAU,SAAS,aAAc,SAASo6B,EAAUt6B,EAASC,GACrH,YAEA,IAAI46B,GAAQP,EAAS,YAAYO,MAE7BC,EAAuB,cAE3B,WAEI16B,KAAK26B,aAAe,SAAStY,EAAMra,GAC/B,QAAM,QAAQ6N,KAAKwM,IAGZ,SAASxM,KAAK7N,IAGzBhI,KAAK46B,YAAc,SAASC,EAAKC,GAC7B,GAAIzY,GAAOwY,EAAIE,QAAQD,GACnBnlB,EAAQ0M,EAAK1M,MAAM,WAEvB,KAAKA,EAAO,MAAO,EAEnB,IAAIqlB,GAASrlB,EAAM,GAAGzT,OAClB+4B,EAAeJ,EAAIK,qBAAqBJ,IAAKA,EAAKE,OAAQA,GAE9D,KAAKC,GAAgBA,EAAaH,KAAOA,EAAK,MAAO,EAErD,IAAIK,GAASn7B,KAAKo7B,WAAWP,EAAIE,QAAQE,EAAaH,KACtDD,GAAIzkB,QAAQ,GAAIqkB,GAAMK,EAAK,EAAGA,EAAKE,EAAO,GAAIG,IAGlDn7B,KAAKo7B,WAAa,SAAS/Y,GACvB,MAAOA,GAAK1M,MAAM,QAAQ,MAG/BpV,KAAKm6B,EAAqB/3B,WAE7B/C,EAAQ86B,qBAAuBA,IAG/B9C,IAAI93B,OAAO,2BAA2B,UAAU,UAAU,SAAS,cAAc,YAAY,8BAA+B,SAASo6B,EAAUt6B,EAASC,GACxJ,YAEA,IAAIs6B,GAAMD,EAAS,iBACfO,EAAQP,EAAS,eAAeO,MAChCY,EAAenB,EAAS,eAAeoB,SAEvCA,EAAW17B,EAAQ07B,SAAW,SAASC,GACnCA,IACAv7B,KAAKw7B,mBAAqB,GAAI3kB,QAC1B7W,KAAKw7B,mBAAmBC,OAAOrlB,QAAQ,YAAa,IAAMmlB,EAAa/rB,QAE3ExP,KAAK07B,kBAAoB,GAAI7kB,QACzB7W,KAAK07B,kBAAkBD,OAAOrlB,QAAQ,YAAa,IAAMmlB,EAAa9rB,OAIlF0qB,GAAIK,SAASc,EAAUD,GAEvB,WAEIr7B,KAAKw7B,mBAAqB,8BAC1Bx7B,KAAK07B,kBAAoB,kCACzB17B,KAAK27B,yBAA0B,uBAC/B37B,KAAK47B,yBAA2B,2BAChC57B,KAAK67B,cAAgB,4BACrB77B,KAAK87B,mBAAqB97B,KAAK+7B,cAC/B/7B,KAAK+7B,cAAgB,SAASC,EAASC,EAAWnB,GAC9C,GAAIzY,GAAO2Z,EAAQjB,QAAQD,EAE3B,IAAI96B,KAAK27B,yBAAyB9lB,KAAKwM,KAC9BriB,KAAK67B,cAAchmB,KAAKwM,KAAUriB,KAAK47B,yBAAyB/lB,KAAKwM,GACtE,MAAO,EAGf,IAAI6Z,GAAKl8B,KAAK87B,mBAAmBE,EAASC,EAAWnB,EAErD,QAAKoB,GAAMl8B,KAAK67B,cAAchmB,KAAKwM,GACxB,QAEJ6Z,GAGXl8B,KAAKm8B,mBAAqB,SAASH,EAASC,EAAWnB,EAAKsB,GACxD,GAAI/Z,GAAO2Z,EAAQjB,QAAQD,EAE3B,IAAI96B,KAAK67B,cAAchmB,KAAKwM,GACxB,MAAOriB,MAAKq8B,sBAAsBL,EAAS3Z,EAAMyY,EAErD,IAAInlB,GAAQ0M,EAAK1M,MAAM3V,KAAKw7B,mBAC5B,IAAI7lB,EAAO,CACP,GAAI1Q,GAAI0Q,EAAM7C,KAEd,IAAI6C,EAAM,GACN,MAAO3V,MAAKs8B,oBAAoBN,EAASrmB,EAAM,GAAImlB,EAAK71B,EAE5D,IAAIkG,GAAQ6wB,EAAQO,oBAAoBzB,EAAK71B,EAAI0Q,EAAM,GAAGzT,OAAQ,EASlE,OAPIiJ,KAAUA,EAAMqxB,gBACZJ,EACAjxB,EAAQnL,KAAKy8B,gBAAgBT,EAASlB,GAClB,OAAbmB,IACP9wB,EAAQ,OAGTA,EAGX,GAAkB,cAAd8wB,EAAJ,CAGA,GAAItmB,GAAQ0M,EAAK1M,MAAM3V,KAAK07B,kBAC5B,IAAI/lB,EAAO,CACP,GAAI1Q,GAAI0Q,EAAM7C,MAAQ6C,EAAM,GAAGzT,MAE/B,OAAIyT,GAAM,GACC3V,KAAK08B,oBAAoBV,EAASrmB,EAAM,GAAImlB,EAAK71B,GAErD+2B,EAAQO,oBAAoBzB,EAAK71B,GAAI,MAIpDjF,KAAKy8B,gBAAkB,SAAST,EAASlB,GACrC,GAAIzY,GAAO2Z,EAAQjB,QAAQD,GACvB6B,EAActa,EAAKvb,OAAO,MAC1B81B,EAAW9B,EACX+B,EAAcxa,EAAKngB,MACvB44B,IAAY,CAGZ,KAFA,GAAIgC,GAAShC,EACTiC,EAASf,EAAQgB,cACZlC,EAAMiC,GAAQ,CACnB1a,EAAO2Z,EAAQjB,QAAQD,EACvB,IAAIK,GAAS9Y,EAAKvb,OAAO,KACzB,KAAgB,IAAZq0B,EAAJ,CAEA,GAAKwB,EAAcxB,EACf,KACJ,IAAI8B,GAAWj9B,KAAKm8B,mBAAmBH,EAAS,MAAOlB,EAEvD,IAAImC,EAAU,CACV,GAAIA,EAASztB,MAAMsrB,KAAO8B,EACtB,KACG,IAAIK,EAAST,cAChB1B,EAAMmC,EAASxtB,IAAIqrB,QAChB,IAAI6B,GAAexB,EACtB,MAGR2B,EAAShC,GAGb,MAAO,IAAIL,GAAMmC,EAAUC,EAAaC,EAAQd,EAAQjB,QAAQ+B,GAAQ56B,SAE5ElC,KAAKq8B,sBAAwB,SAASL,EAAS3Z,EAAMyY,GAOjD,IANA,GAAI+B,GAAcxa,EAAKvb,OAAO,QAC1Bi2B,EAASf,EAAQgB,YACjBJ,EAAW9B,EAEX9E,EAAK,uCACLkH,EAAQ,IACHpC,EAAMiC,GAAQ,CACnB1a,EAAO2Z,EAAQjB,QAAQD,EACvB,IAAIt6B,GAAIw1B,EAAG3b,KAAKgI,EAChB,IAAK7hB,IACDA,EAAE,GAAI08B,IACLA,KAEAA,GAAO,MAGhB,GAAIJ,GAAShC,CACb,IAAIgC,EAASF,EACT,MAAO,IAAInC,GAAMmC,EAAUC,EAAaC,EAAQza,EAAKngB,UAI9D3B,KAAK+6B,EAAS34B,aAIjBi1B,IAAI93B,OAAO,iBAAiB,UAAU,UAAU,SAAS,cAAc,gBAAgB,gCAAgC,kCAAkC,4BAA4B,0BAA0B,4BAA6B,SAASo6B,EAAUt6B,EAASC,GACxQ,YAEA,IAAIs6B,GAAMD,EAAS,cACfiD,EAAWjD,EAAS,UAAUkD,KAC9BC,EAAiBnD,EAAS,0BAA0BG,mBACpDK,EAAuBR,EAAS,4BAA4BQ,qBAC5D4C,EAAkBpD,EAAS,sBAAsBoD,gBACjDC,EAAiBrD,EAAS,oBAAoBoB,SAC9CkC,EAAetD,EAAS,2BAA2BsD,aAEnDJ,EAAO,WACPp9B,KAAKq9B,eAAiBA,EACtBr9B,KAAKy9B,SAAW,GAAI/C,GACpB16B,KAAK09B,WAAa,GAAIJ,GACtBt9B,KAAK29B,aAAe,GAAIJ,GAE5BpD,GAAIK,SAAS4C,EAAMD,GAEnB,WAEIn9B,KAAK49B,kBAAoB,SAAS9b,EAAOO,EAAMwb,GAC3C,GAAI1C,GAASn7B,KAAKo7B,WAAW/Y,EAE7B,IAAa,SAATP,EAAkB,CACNO,EAAK1M,MAAM,qBAEnBwlB,GAAU0C,GAIlB,MAAO1C,IAGXn7B,KAAK26B,aAAe,SAAS7Y,EAAOO,EAAMra,GACtC,MAAOhI,MAAKy9B,SAAS9C,aAAatY,EAAMra,IAG5ChI,KAAK46B,YAAc,SAAS9Y,EAAO+Y,EAAKC,GACpC96B,KAAKy9B,SAAS7C,YAAYC,EAAKC,IAGnC96B,KAAK89B,aAAe,SAAS9B,GACzB,GAAI+B,GAAS,GAAIP,IAAc,OAAQt9B,EAAoB,IAAK,aAWhE,OAVA69B,GAAOC,iBAAiBhC,EAAQiC,eAEhCF,EAAOrE,GAAG,WAAY,SAASr3B,GAC3B25B,EAAQkC,eAAe77B,EAAEsB,QAG7Bo6B,EAAOrE,GAAG,YAAa,WACnBsC,EAAQmC,qBAGLJ,GAIX/9B,KAAKo+B,IAAM,iBACZ79B,KAAK68B,EAAKz6B,WAEb/C,EAAQw9B,KAAOA,KAMV,SAASv9B,EAAQD,GAEtBC,EAAOD,QAAQS,GAAK,uBACpBR,EAAOD,QAAQy+B,IAAM;66zCAIhB,SAASx+B,EAAQD,GAEtBg4B,IAAI93B,OAAO,qBAAqB,UAAU,UAAU,SAAS,cAAc,eAAe,gBAAgB,4BAA4B,gBAAiB,SAASo6B,EAAUt6B,EAASC,GACnL,YAEA,IAAI8F,GAAMu0B,EAAS,cACfoE,EAAOpE,EAAS,eAChB3tB,EAAQ2tB,EAAS,gBAgJjBqE,EAAcrE,EAAS,4BAA4BqE,YACnDC,EAAUtE,EAAS,cAEvBv0B,GAAI84B,gBAlJe,0xGAkJe,gBAElC,IAAIhJ,GAAO,qrCAkBHrf,QAAQ,QAAS,KAErB7Q,EAAY,SAASoG,EAAQR,EAAOuzB,GACpC,GAAIC,GAAMh5B,EAAI+G,cAAc,MAC5BiyB,GAAI3Y,UAAYyP,EAChBz1B,KAAKuZ,QAAUolB,EAAIzlB,WAEnBlZ,KAAK4+B,QACL5+B,KAAK6+B,UAAUlzB,KAGnB,WACI3L,KAAK6+B,UAAY,SAASlzB,GACtBA,EAAO/E,UAAY5G,KACnB2L,EAAO/K,UAAU8G,YAAY1H,KAAKuZ,SAClCvZ,KAAK2L,OAASA,GAGlB3L,KAAK8+B,cAAgB,SAASC,GAC1B/+B,KAAK4G,UAAYm4B,EAAG92B,cAAc,oBAClCjI,KAAKg/B,WAAaD,EAAG92B,cAAc,qBACnCjI,KAAKi/B,cAAgBF,EAAG92B,cAAc,uBACtCjI,KAAKk/B,aAAeH,EAAG92B,cAAc,6BACrCjI,KAAKm/B,oBAAsBJ,EAAG92B,cAAc,gCAC5CjI,KAAKo/B,gBAAkBL,EAAG92B,cAAc,6BACxCjI,KAAKq/B,YAAcr/B,KAAK4G,UAAUqB,cAAc,qBAChDjI,KAAKs/B,aAAet/B,KAAKg/B,WAAW/2B,cAAc,sBAGtDjI,KAAK4+B,MAAQ,WACT,GAAIG,GAAK/+B,KAAKuZ,OAEdvZ,MAAK8+B,cAAcC,EAEnB,IAAIQ,GAAQv/B,IACZuM,GAAMizB,YAAYT,EAAI,YAAa,SAAS18B,GACxCgK,WAAW,WACPkzB,EAAME,YAAY13B,SACnB,GACHwE,EAAMiF,gBAAgBnP,KAE1BkK,EAAMizB,YAAYT,EAAI,QAAS,SAAS18B,GACpC,GAAIq9B,GAAIr9B,EAAEwK,QAAUxK,EAAE4vB,WAClBtpB,EAAS+2B,EAAEC,aAAa,SACxBh3B,IAAU42B,EAAM52B,GAChB42B,EAAM52B,KACD42B,EAAMK,aAAatG,SAAS3wB,IACjC42B,EAAMK,aAAatG,SAAS3wB,GAAQ0R,KAAKklB,GAC7ChzB,EAAMiF,gBAAgBnP,KAG1BkK,EAAMszB,sBAAsBd,EAAI,SAAS18B,EAAGy9B,EAAQ7uB,GAChD,GAAI8uB,GAAYvB,EAAQwB,gBAAgB/uB,GACpCgvB,EAAUV,EAAMK,aAAaM,eAAeJ,EAAQC,EACpDE,IAAWA,EAAQ5lB,OACnB4lB,EAAQ5lB,KAAKklB,GACbhzB,EAAM4zB,UAAU99B,MAIxBrC,KAAKogC,UAAY9B,EAAK+B,YAAY,WAC9Bd,EAAMe,MAAK,GAAO,KAGtB/zB,EAAMizB,YAAYx/B,KAAKq/B,YAAa,QAAS,WACzCE,EAAMa,UAAUG,SAAS,MAE7Bh0B,EAAMizB,YAAYx/B,KAAKq/B,YAAa,QAAS,WACzCE,EAAME,YAAcF,EAAMF,YAC1BE,EAAMF,YAAY93B,OAASg4B,EAAMhtB,cAErChG,EAAMizB,YAAYx/B,KAAKs/B,aAAc,QAAS,WAC1CC,EAAME,YAAcF,EAAMD,aAC1BC,EAAMF,YAAY93B,OAASg4B,EAAMhtB,eAGzCvS,KAAKwgC,kBAAoB,GAAIjC,KACzBhF,QAAS,MACT91B,KAAM,iBACN4W,KAAM,SAAS1O,GACXA,EAAO/E,UAAU6f,WAGzBzmB,KAAK4/B,aAAe,GAAIrB,GACxBv+B,KAAK4/B,aAAaa,UACdC,mBAAoB,SAAS3B,GACzB,GAAI4B,GAAY5B,EAAG4B,WAAa5B,EAAG4B,SACnC5B,GAAGC,WAAWjnB,MAAM0Q,QAAUkY,EAAY,GAAK,OAC/C5B,EAAGM,YAAYt3B,SAEnB64B,0BAA2B,SAAS7B,GAChCA,EAAGC,WAAWjnB,MAAM0Q,QAAU,GAC9BsW,EAAGO,aAAav3B,SAEpB84B,mBAAoB,SAAS9B,GACzBA,EAAG+B,YAEPC,+BAAgC,SAAShC,GACrCA,EAAGiC,YAEPC,IAAO,SAASlC,GACZ1yB,WAAW,WAAa0yB,EAAGtY,UAE/Bya,OAAU,SAASnC,GACXA,EAAGU,aAAeV,EAAGO,cACrBP,EAAG3oB,UACP2oB,EAAG+B,YAEPK,eAAgB,SAASpC,GACjBA,EAAGU,aAAeV,EAAGO,cACrBP,EAAG3oB,UACP2oB,EAAGiC,YAEPI,aAAc,SAASrC,GACfA,EAAGU,aAAeV,EAAGO,cACrBP,EAAGsC,aACPtC,EAAGuC,WAEPC,IAAO,SAASxC,IACXA,EAAGU,aAAeV,EAAGO,aAAeP,EAAGM,YAAcN,EAAGO,cAAcv3B,WAI/E/H,KAAK4/B,aAAa4B,cACd/9B,KAAM,mBACN81B,SAAUkI,IAAK,cAAeC,IAAK,yBACnCrnB,KAAM,SAAS0kB,GACXA,EAAGG,aAAavR,SAAWoR,EAAGG,aAAavR,QAC3CoR,EAAG4C,kBAGPl+B,KAAM,sBACN81B,SAAUkI,IAAK,cAAeC,IAAK,yBACnCrnB,KAAM,SAAS0kB,GACXA,EAAGI,oBAAoBxR,SAAWoR,EAAGI,oBAAoBxR,QACzDoR,EAAG4C,kBAGPl+B,KAAM,mBACN81B,SAAUkI,IAAK,cAAeC,IAAK,yBACnCrnB,KAAM,SAAS0kB,GACXA,EAAGK,gBAAgBzR,SAAWoR,EAAGK,gBAAgBzR,QACjDoR,EAAG4C,mBAIX3hC,KAAK2hC,aAAe,WAChBh8B,EAAIi8B,YAAY5hC,KAAKk/B,aAAc,UAAWl/B,KAAKk/B,aAAavR,SAChEhoB,EAAIi8B,YAAY5hC,KAAKo/B,gBAAiB,UAAWp/B,KAAKo/B,gBAAgBzR,SACtEhoB,EAAIi8B,YAAY5hC,KAAKm/B,oBAAqB,UAAWn/B,KAAKm/B,oBAAoBxR,SAC9E3tB,KAAKsgC,MAAK,GAAO,IAGrBtgC,KAAKuS,UAAY,SAASyjB,GACtBh2B,KAAK2L,OAAOqwB,QAAQzpB,UAAUyjB,GAAMh2B,KAAK2L,OAAOk2B,QAAQC,SAAS9L,IACjEh2B,KAAK2L,OAAOo2B,SAASC,qBAEzBhiC,KAAKsgC,KAAO,SAAS2B,EAAaC,EAAWC,GACzC,GAAIh3B,GAAQnL,KAAK2L,OAAO20B,KAAKtgC,KAAKq/B,YAAY93B,OAC1C06B,YAAaA,EACbC,UAAWA,EACXE,MAAM,EACNC,OAAQriC,KAAKk/B,aAAavR,QAC1B2U,cAAetiC,KAAKm/B,oBAAoBxR,QACxC4U,UAAWviC,KAAKo/B,gBAAgBzR,QAChCwU,cAAeA,IAEfK,GAAWr3B,GAASnL,KAAKq/B,YAAY93B,KACzC5B,GAAIi8B,YAAY5hC,KAAK4G,UAAW,cAAe47B,GAC/CxiC,KAAK2L,OAAO82B,MAAM,iBAAmB9sB,OAAQ6sB,IAC7CxiC,KAAKuS,aAETvS,KAAK8gC,SAAW,WACZ9gC,KAAKsgC,MAAK,GAAM,IAEpBtgC,KAAKghC,SAAW,WACZhhC,KAAKsgC,MAAK,GAAM,IAEpBtgC,KAAKshC,QAAU,WACX,GAAIn2B,GAAQnL,KAAK2L,OAAO21B,QAAQthC,KAAKq/B,YAAY93B,OAC7C86B,OAAQriC,KAAKk/B,aAAavR,QAC1B2U,cAAetiC,KAAKm/B,oBAAoBxR,QACxC4U,UAAWviC,KAAKo/B,gBAAgBzR,UAEhC6U,GAAWr3B,GAASnL,KAAKq/B,YAAY93B,KACzC5B,GAAIi8B,YAAY5hC,KAAK4G,UAAW,cAAe47B,GAC/CxiC,KAAK2L,OAAO82B,MAAM,iBAAmB9sB,OAAQ6sB,IAC7CxiC,KAAKuS,YACLvS,KAAKymB,QAETzmB,KAAKoW,QAAU,WACNpW,KAAK2L,OAAO+2B,eACb1iC,KAAK2L,OAAOyK,QAAQpW,KAAKs/B,aAAa/3B,QAE9CvH,KAAK2iC,mBAAqB,WACjB3iC,KAAK2L,OAAO+2B,gBACb1iC,KAAK2L,OAAOyK,QAAQpW,KAAKs/B,aAAa/3B,OACtCvH,KAAK8gC,aAGb9gC,KAAKqhC,WAAa,WACTrhC,KAAK2L,OAAO+2B,eACb1iC,KAAK2L,OAAO01B,WAAWrhC,KAAKs/B,aAAa/3B,QAGjDvH,KAAKymB,KAAO,WACRzmB,KAAKuZ,QAAQxB,MAAM0Q,QAAU,OAC7BzoB,KAAK2L,OAAOi3B,WAAWC,sBAAsB7iC,KAAKwgC,mBAClDxgC,KAAK2L,OAAO5D,SAEhB/H,KAAKqS,KAAO,SAAS9K,EAAOo5B,GACxB3gC,KAAKuZ,QAAQxB,MAAM0Q,QAAU,GAC7BzoB,KAAKg/B,WAAWjnB,MAAM0Q,QAAUkY,EAAY,GAAK,OAEjD3gC,KAAK2gC,UAAYA,EAEbp5B,IACAvH,KAAKq/B,YAAY93B,MAAQA,GAE7BvH,KAAKsgC,MAAK,GAAO,GAAO,GAExBtgC,KAAKq/B,YAAYt3B,QACjB/H,KAAKq/B,YAAYn0B,SAEjBlL,KAAK2L,OAAOi3B,WAAWE,mBAAmB9iC,KAAKwgC,oBAGnDxgC,KAAK+iC,UAAY,WACb,GAAIC,GAAKv2B,SAASw2B,aAClB,OAAOD,IAAMhjC,KAAKq/B,aAAe2D,GAAMhjC,KAAKs/B,gBAEjD/+B,KAAKgF,EAAU5C,WAElB/C,EAAQ2F,UAAYA,EAEpB3F,EAAQsjC,OAAS,SAASv3B,EAAQg1B,IACrBh1B,EAAO/E,WAAa,GAAIrB,GAAUoG,IACxC0G,KAAK1G,EAAOqwB,QAAQmH,eAAgBxC,MAI3B,WACI/I,IAAIsC,UAAU,qBAAsB,kBAMnD,SAASr6B,EAAQD,GAgCtBg4B,IAAI93B,OAAO,wBAAyB,UAAW,UAAW,SAAU,eAAgB,SAASo6B,EAAUt6B,EAASC,GAEhHD,EAAQwjC,QAAS,EACjBxjC,EAAQyjC,SAAW,iBACnBzjC,EAAQ0jC,QAAU,+nFA4GRpJ,EAAS,cACfuE,gBAAgB7+B,EAAQ0jC,QAAS1jC,EAAQyjC","file":"jsoneditor-minimalist"} \ No newline at end of file +undefined \ No newline at end of file diff --git a/dist/jsoneditor-minimalist.min.js b/dist/jsoneditor-minimalist.min.js index f8648a7..66dc905 100644 --- a/dist/jsoneditor-minimalist.min.js +++ b/dist/jsoneditor-minimalist.min.js @@ -1,33 +1 @@ -/*! - * jsoneditor.js - * - * @brief - * JSONEditor is a web-based tool to view, edit, format, and validate JSON. - * It has various modes such as a tree editor, a code editor, and a plain text - * editor. - * - * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+ - * - * @license - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - * - * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org - * - * @author Jos de Jong, - * @version 5.7.0 - * @date 2017-05-26 - */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var o=a.getInternetExplorerVersion();if(-1!=o&&o<9)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","theme","ajv","schema","templates","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var o;try{o=i(!function(){var e=new Error('Cannot find module "ajv"');throw e.code="MODULE_NOT_FOUND",e}())}catch(e){}var r=i(1),s=i(12),a=i(4);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype.destroy=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=a.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,o=this.container,r=a.extend({},this.options),s=r.mode;r.mode=e;var l=n.modes[e];if(!l)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==l.data;if(i=this.getName(),t=this[c?"getText":"get"](),this.destroy(),a.clear(this),a.extend(this,l.mixin),this.create(o,r),this.setName(i),this[c?"setText":"set"](t),"function"==typeof l.load)try{l.load.call(this)}catch(e){console.error(e)}if("function"==typeof r.onModeChange&&e!==s)try{r.onModeChange(e,s)}catch(e){console.error(e)}}catch(e){this._onError(e)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||o({allErrors:!0,verbose:!0})}catch(e){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},n.prototype.validate=function(){},n.prototype.refresh=function(){},n.registerMode=function(e){var t,i;if(a.isArray(e))for(t=0;t0?this.autoScrollStep=(n+24-e)/3:e>r-24&&o+i.scrollTop3?(i.scrollTop+=o/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},d._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.type="button",i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.type="button",n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var o=document.createElement("button");o.type="button",o.className="jsoneditor-undo jsoneditor-separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.type="button",s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new r(this,this.menu))},d._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},d._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},d._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value&&e.target!=t.dom.select)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},d._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},d._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},d._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},d._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},d._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},d.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},d.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},d._findTopLevelNodes=function(e,t){for(var i=e.getNodePath(),n=t.getNodePath(),o=0;o=0},n.prototype.canRedo=function(){return this.index=0;){var t=o[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&"\t"!==t)return t;e--}return""}())?function(){for(var e=["null","true","false"],i="",n=t(),s=/[a-zA-Z_$\d]/;s.test(n);)i+=n,r++,n=t();-1===e.indexOf(i)?o.push('"'+i+'"'):o.push(i)}():(o.push(a),r++)}return o.join("")},t.escapeUnicodeChars=function(e){return e.replace(/[\u007F-\uFFFF]/g,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})},t.validate=function(e){void 0!==n?n.parse(e):JSON.parse(e)},t.extend=function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},t.clear=function(e){for(var t in e)e.hasOwnProperty(t)&&delete e[t];return e},t.type=function(e){return null===e?"null":void 0===e?"undefined":e instanceof Number||"number"==typeof e?"number":e instanceof String||"string"==typeof e?"string":e instanceof Boolean||"boolean"==typeof e?"boolean":e instanceof RegExp||"regexp"==typeof e?"regexp":t.isArray(e)?"array":"object"};var o=/^https?:\/\/\S+$/;t.isUrl=function(e){return("string"==typeof e||e instanceof String)&&o.test(e)},t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.getAbsoluteLeft=function(e){return e.getBoundingClientRect().left+window.pageXOffset||document.scrollLeft||0},t.getAbsoluteTop=function(e){return e.getBoundingClientRect().top+window.pageYOffset||document.scrollTop||0},t.addClassName=function(e,t){var i=e.className.split(" ");-1==i.indexOf(t)&&(i.push(t),e.className=i.join(" "))},t.removeClassName=function(e,t){var i=e.className.split(" "),n=i.indexOf(t);-1!=n&&(i.splice(n,1),e.className=i.join(" "))},t.stripFormatting=function(e){for(var i=e.childNodes,n=0,o=i.length;n=0;a--){var l=s[a];!0===l.specified&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){if(window.getSelection()){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,i){if(void 0==i&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var n=e.childNodes,o="",r=0,s=n.length;r5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var o=this,r=arguments,s=function(){n=null,i||e.apply(o,r)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(o,r)}},t.textDiff=function(e,t){for(var i=t.length,n=0,o=e.length,r=t.length;t.charAt(n)===e.charAt(n)&&nn&&o>0;)r--,o--;return{start:n,end:r}}},function(e,t,i){var n=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,o,r,s){var a=r.length-1;switch(o){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=r[a-1];case 13:this.$={};break;case 14:this.$=r[a-1];break;case 15:this.$=[r[a-2],r[a]];break;case 16:this.$={},this.$[r[a][0]]=r[a][1];break;case 17:this.$=r[a-2],r[a-2][r[a][0]]=r[a][1];break;case 18:this.$=[];break;case 19:this.$=r[a-1];break;case 20:this.$=[r[a]];break;case 21:this.$=r[a-2],r[a-2].push(r[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=i.lexer.lex()||1,"number"!=typeof e&&(e=i.symbols_[e]||e),e}var i=this,n=[0],o=[null],r=[],s=this.table,a="",l=0,c=0,d=0,h=2;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;r.push(u),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var p,f,m,g,v,y,b,w,x,_={};;){if(m=n[n.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null==p&&(p=t()),g=s[m]&&s[m][p]),void 0===g||!g.length||!g[0]){if(!d){x=[];for(y in s[m])this.terminals_[y]&&y>2&&x.push("'"+this.terminals_[y]+"'");var E="";E=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+x.join(", ")+", got '"+this.terminals_[p]+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:u,expected:x})}if(3==d){if(1==p)throw new Error(E||"Parsing halted.");c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,p=t()}for(;;){if(h.toString()in s[m])break;if(0==m)throw new Error(E||"Parsing halted.");!function(e){n.length=n.length-2*e,o.length=o.length-e,r.length=r.length-e}(1),m=n[n.length-1]}f=p,p=h,m=n[n.length-1],g=s[m]&&s[m][h],d=3}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+p);switch(g[0]){case 1:n.push(p),o.push(this.lexer.yytext),r.push(this.lexer.yylloc),n.push(g[1]),p=null,f?(p=f,f=null):(c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,d>0&&d--);break;case 2:if(b=this.productions_[g[1]][1],_.$=o[o.length-b],_._$={first_line:r[r.length-(b||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(b||1)].first_column,last_column:r[r.length-1].last_column},void 0!==(v=this.performAction.call(_,a,c,l,this.yy,g[1],o,r)))return v;b&&(n=n.slice(0,-1*b*2),o=o.slice(0,-1*b),r=r.slice(0,-1*b)),n.push(this.productions_[g[1]][0]),o.push(_.$),r.push(_._$),w=s[n[n.length-2]][n[n.length-1]],n.push(w);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e||void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t){"use strict";function i(e,t){var i=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var n=document.createElement("table");this.dom.table=n,n.className="jsoneditor-search",t.appendChild(n);var o=document.createElement("tbody");this.dom.tbody=o,n.appendChild(o);var r=document.createElement("tr");o.appendChild(r);var s=document.createElement("td");r.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),r.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var d=document.createElement("tbody");c.appendChild(d),r=document.createElement("tr"),d.appendChild(r);var h=document.createElement("button");h.type="button",h.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(h),r.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){i._onDelayedSearch(e)},u.onchange=function(e){i._onSearch()},u.onkeydown=function(e){i._onKeyDown(e)},u.onkeyup=function(e){i._onKeyUp(e)},h.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),r.appendChild(s);var p=document.createElement("button");p.type="button",p.title="Next result (Enter)",p.className="jsoneditor-next",p.onclick=function(){i.next()},s=document.createElement("td"),s.appendChild(p),r.appendChild(s);var f=document.createElement("button");f.type="button",f.title="Previous result (Shift+Enter)",f.className="jsoneditor-previous",f.onclick=function(){i.previous()},s=document.createElement("td"),s.appendChild(f),r.appendChild(s)}i.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;i<0&&(i=t),this._setActiveResult(i,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node;"field"==this.activeResult.elem?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var n=this.results[this.resultIndex].node,o=this.results[this.resultIndex].elem;"field"==o?n.searchFieldActive=!0:n.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],n.updateDom(),n.scrollTo(function(){t&&n.focus(o)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},function(e,t,i){"use strict";function n(e,t){function i(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.type="button",l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(e){e.preventDefault(),n.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var d;if(o.click){l.className+=" jsoneditor-default";var h=document.createElement("button");h.type="button",s.buttonExpand=h,h.className="jsoneditor-expand",h.innerHTML='
',a.appendChild(h),o.submenuTitle&&(h.title=o.submenuTitle),d=h}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),d=l}d.onclick=function(e){e.preventDefault(),n._onExpandItem(s),d.focus()};var p=[];s.subItems=p;var f=document.createElement("ul");s.ul=f,f.className="jsoneditor-menu",f.style.height="0",a.appendChild(f),i(f,p,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var n=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu-root",o.root=r;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s,r.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),o.list=a,o.items=[];var l=document.createElement("button");l.type="button",o.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var o=i(4);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var r=e.getBoundingClientRect(),s=t.getBoundingClientRect();r.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(window,"mousedown",function(e){var t=e.target;t==d||c._isChildOf(t,d)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",o.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var r=e.ul;r.style.display="block";r.clientHeight;setTimeout(function(){if(t.expandedItem==e){for(var i=0,n=0;n0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var o=document.createElement("button");for(o.type="button",o.className="jsoneditor-schema-error",o.appendChild(n),o.onmouseover=o.onfocus=function(){for(var e=["right","above","below","left"],t=0;t0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(r))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");i.type="button",e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),o=document.createElement("button");o.type="button",e.menu=o,o.className="jsoneditor-contextmenu",o.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],o=e[e.length-1],r=n.getNodeFromTarget(t.target),s=o._nextSibling(),l=i.editor,c=a.getAbsoluteTop(r.dom.tr)-a.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,o,r,s,c,d,h,u,p,f,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,x=t.pageX,_=!1,E=e[0];if(i=E.dom.tr,p=a.getAbsoluteTop(i),g=i.offsetHeight,wf+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),_=!0)}else{var C=e[e.length-1];if(c=C.expanded&&C.append?C.append.getDom():C.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),r=s;do{u=n.getNodeFromTarget(r),r&&(v=r.nextSibling?a.getAbsoluteTop(r.nextSibling):0,y=r?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==C&&(p+=27)),r=r.nextSibling}while(r&&w>p+y);if(u&&u.parent){var j=x-b.drag.mouseX,S=Math.round(j/24/2),N=b.drag.level+S,k=u.getLevel();for(o=u.dom.tr.previousSibling;k0)return i[0].enum}return null},n._findSchema=function(e,t){for(var i=e,n=0;n0?this.editor.multiselection.nodes:[this],w=b[0],x=b[b.length-1];if(13==u){if(p==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(p==this.dom.expand){var _=this._hasChilds();if(_){var E=e.ctrlKey;this._onExpand(E),p.focus(),v=!0}}}else if(68==u)f&&y&&(n.onDuplicate(b),v=!0);else if(69==u)f&&(this._onExpand(m),p.focus(),v=!0);else if(77==u&&y)f&&(this.showContextMenu(p),v=!0);else if(46==u&&y)f&&(n.onRemove(b),v=!0);else if(45==u&&y)f&&!m?(this._onInsertBefore(),v=!0):f&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var C=this._lastNode();C&&C.focus(n.focusElement||this._getElementName(p)),v=!0}}else if(36==u){if(g){var j=this._firstNode();j&&j.focus(n.focusElement||this._getElementName(p)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(p);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&y){if(x.expanded){var N=x.getAppend();o=N?N.nextSibling:void 0}else{var k=x.getDom();o=k.nextSibling}o&&(i=n.getNodeFromTarget(o),r=o.nextSibling,T=n.getNodeFromTarget(r),i&&i instanceof l&&1!=x.parent.childs.length&&T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(p))),v=!0):!g&&f&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),t.focus("field")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var A=this._nextElement(p);A&&this.focus(this._getElementName(A)),v=!0}else if(g&&m&&y){k=w.getDom();var O=k.previousSibling;O&&(t=n.getNodeFromTarget(O))&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()}))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(p))),v=!0;else if(!g&&f&&m&&y)i=this._nextNode(),i&&(h=this.editor.multiselection,h.start=h.start||this,h.end=i,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),i.focus("field")),v=!0;else if(g&&m&&y){i=x.expanded?x.append?x.append._nextNode():void 0:x._nextNode();var T=i&&(i._nextNode()||i.parent.append);T&&T.parent&&(s=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(n.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();n.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:r,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:r,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onAppend=function(e,t,i){var o=this.editor.getSelection(),r=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,r=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return t*o(e[i],n[i])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:r,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},n.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},n.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},n.blurNodes=function(e){if(!Array.isArray(e))return void n.blurNodes([e]);var t=e[0],i=t.parent,o=t.getIndex();i.childs[o+e.length]?i.childs[o+e.length].focus():i.childs[o-1]?i.childs[o-1].focus():i.focus()},n.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},n.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.previousSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.nextSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.firstChild;e=n.getNodeFromTarget(i)}return e},n.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.lastChild;for(e=n.getNodeFromTarget(i);i&&e instanceof l&&!e.isVisible();)i=i.previousSibling,e=n.getNodeFromTarget(i)}return e},n.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},n.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},n.prototype._getElementName=function(e){var t=this.dom;for(var i in t)if(t.hasOwnProperty(i)&&t[i]==e)return i;return null},n.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},n.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},n.prototype.addTemplates=function(e,t){var i=this,n=i.editor.options.templates;if(null!=n){n.length&&e.push({type:"separator"});var o=function(e,t){i._onAppend(e,t)},r=function(e,t){i._onInsertBefore(e,t)};n.forEach(function(i){e.push({text:i.text,className:i.className||"jsoneditor-type-object",title:i.title,click:t?o.bind(this,i.field,i.value):r.bind(this,i.field,i.value)})})}},n.prototype.showContextMenu=function(e,t){var i=this,o=n.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:o.auto,click:function(){i._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:o.array,click:function(){i._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:o.object,click:function(){i._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:o.string,click:function(){i._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){i.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){i.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){i.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=i.parent.childs;if(i==l[l.length-1]){var c=[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onAppend("","","string")}}];i.addTemplates(c,!0),s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){i._onAppend("","","auto")},submenu:c})}var d=[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onInsertBefore("","","string")}}];i.addTemplates(d,!1),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){i._onInsertBefore("","","auto")},submenu:d}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){n.onDuplicate(i)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){n.onRemove(i)}}))}new r(s,{close:t}).show(e,this.editor.content)},n.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},n.prototype._stringCast=function(e){var t=e.toLowerCase(),i=Number(e),n=parseFloat(e);return""==e?"":"null"==t?null:"true"==t||"false"!=t&&(isNaN(i)||isNaN(n)?e:i)},n.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return!0===this.editor.options.escapeUnicode&&(n=a.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"';return a.parse(t).replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;im)return 1}for(var g=0,v=Math.max(u.length,p.length);go)return 1}return 0}},function(e,t,i){"use strict";function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,"tree"===this.editor.options.mode){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.type="button",n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="jsoneditor-readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,o=e.TYPE_TITLES,s=[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){n._onAppend("","","string")}}];n.addTemplates(s,!0),new r([{text:"Append!",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:s}],{close:i}).show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom;if(i==n.menu&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var r=this.editor.highlighter;r.highlight(this.parent),r.lock(),o.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){o.removeClassName(n.menu,"jsoneditor-selected"),r.unlock(),r.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=i(4),r=i(7);e.exports=n},function(e,t,i){"use strict";function n(e,t,i,n){for(var r={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;a0){if(i.length>3){i=i.slice(0,3);var n=this.validateSchema.errors.length-3;i.push("("+n+" more errors...)")}var o=document.createElement("div");o.innerHTML=''+i.map(function(e){return''+("string"==typeof e?'":"")+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=o,this.frame.appendChild(o);var s=o.clientHeight;this.content.style.marginBottom=-s+"px",this.content.style.paddingBottom=s+"px"}if(this.aceEditor){this.aceEditor.resize(!1)}},e.exports=[{mode:"text",mixin:s,data:"text",load:s.format},{mode:"code",mixin:s,data:"text",load:s.format}]},function(e,t,i){var n;if(window.ace)n=window.ace;else try{n=i(!function(){var e=new Error('Cannot find module "brace"');throw e.code="MODULE_NOT_FOUND",e}()),i(14),i(16)}catch(e){}e.exports=n},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};n.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return!!/^\s+$/.test(e)&&/^\s*\}/.test(t)},this.autoOutdent=function(e,t){var i=e.getLine(t),o=i.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new n(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};n.inherits(s,r),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var o=this._getFoldWidgetBase(e,t,i);return!o&&this.startRegionRe.test(n)?"start":o},this.getFoldWidgetRange=function(e,t,i,n){var o=e.getLine(i);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,i);var r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],i,s);var a=e.getCommentFoldRange(i,s+r[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),n=i.search(/\S/),r=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(n==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),r=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is)return new o(s,n,d,t.length)}}.call(s.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,d=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(h,r),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){t.match(/^.*[\{\(\[]\s*$/)&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new d(["ace"],i(15),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(h.prototype),t.Mode=h})},function(e,t){e.exports.id="ace/mode/json_worker", -e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if("[object Object]"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:"\t"},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws="\t\\n\v\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'},function(e,t){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,i){"use strict";var n=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");n.importCssString("\t.ace_search {\tbackground-color: #ddd;\tborder: 1px solid #cbcbcb;\tborder-top: 0 none;\tmax-width: 325px;\toverflow: hidden;\tmargin: 0;\tpadding: 4px;\tpadding-right: 6px;\tpadding-bottom: 0;\tposition: absolute;\ttop: 0px;\tz-index: 99;\twhite-space: normal;\t}\t.ace_search.left {\tborder-left: 0 none;\tborder-radius: 0px 0px 5px 0px;\tleft: 0;\t}\t.ace_search.right {\tborder-radius: 0px 0px 0px 5px;\tborder-right: 0 none;\tright: 0;\t}\t.ace_search_form, .ace_replace_form {\tborder-radius: 3px;\tborder: 1px solid #cbcbcb;\tfloat: left;\tmargin-bottom: 4px;\toverflow: hidden;\t}\t.ace_search_form.ace_nomatch {\toutline: 1px solid red;\t}\t.ace_search_field {\tbackground-color: white;\tcolor: black;\tborder-right: 1px solid #cbcbcb;\tborder: 0 none;\t-webkit-box-sizing: border-box;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tfloat: left;\theight: 22px;\toutline: 0;\tpadding: 0 7px;\twidth: 214px;\tmargin: 0;\t}\t.ace_searchbtn,\t.ace_replacebtn {\tbackground: #fff;\tborder: 0 none;\tborder-left: 1px solid #dcdcdc;\tcursor: pointer;\tfloat: left;\theight: 22px;\tmargin: 0;\tposition: relative;\t}\t.ace_searchbtn:last-child,\t.ace_replacebtn:last-child {\tborder-top-right-radius: 3px;\tborder-bottom-right-radius: 3px;\t}\t.ace_searchbtn:disabled {\tbackground: none;\tcursor: default;\t}\t.ace_searchbtn {\tbackground-position: 50% 50%;\tbackground-repeat: no-repeat;\twidth: 27px;\t}\t.ace_searchbtn.prev {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \t}\t.ace_searchbtn.next {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \t}\t.ace_searchbtn_close {\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\tborder-radius: 50%;\tborder: 0 none;\tcolor: #656565;\tcursor: pointer;\tfloat: right;\tfont: 16px/16px Arial;\theight: 14px;\tmargin: 5px 1px 9px 5px;\tpadding: 0;\ttext-align: center;\twidth: 14px;\t}\t.ace_searchbtn_close:hover {\tbackground-color: #656565;\tbackground-position: 50% 100%;\tcolor: white;\t}\t.ace_replacebtn.prev {\twidth: 54px\t}\t.ace_replacebtn.next {\twidth: 27px\t}\t.ace_button {\tmargin-left: 2px;\tcursor: pointer;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\toverflow: hidden;\topacity: 0.7;\tborder: 1px solid rgba(100,100,100,0.23);\tpadding: 1px;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tcolor: black;\t}\t.ace_button:hover {\tbackground-color: #eee;\topacity:1;\t}\t.ace_button:active {\tbackground-color: #ddd;\t}\t.ace_button.checked {\tborder-color: #3399ff;\topacity:1;\t}\t.ace_search_options{\tmargin-bottom: 3px;\ttext-align: right;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\t}","ace_searchbox");var l=''.replace(/>\s+/g,">"),c=function(e,t,i){var o=n.createElement("div");o.innerHTML=l,this.element=o.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,i,n){var o=a.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new s([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new s,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var o=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),r=!o&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){(e.searchBox||new c(e)).show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter {\tbackground: #ebebeb;\tcolor: #333\t}\t\t.ace-jsoneditor.ace_editor {\tfont-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\tline-height: 1.3;\tbackground-color: #fff;\t}\t.ace-jsoneditor .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8\t}\t.ace-jsoneditor .ace_scroller {\tbackground-color: #FFFFFF\t}\t.ace-jsoneditor .ace_text-layer {\tcolor: gray\t}\t.ace-jsoneditor .ace_variable {\tcolor: #1a1a1a\t}\t.ace-jsoneditor .ace_cursor {\tborder-left: 2px solid #000000\t}\t.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\tborder-left: 0px;\tborder-bottom: 1px solid #000000\t}\t.ace-jsoneditor .ace_marker-layer .ace_selection {\tbackground: lightgray\t}\t.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px #FFFFFF;\tborder-radius: 2px\t}\t.ace-jsoneditor .ace_marker-layer .ace_step {\tbackground: rgb(255, 255, 0)\t}\t.ace-jsoneditor .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid #BFBFBF\t}\t.ace-jsoneditor .ace_marker-layer .ace_active-line {\tbackground: #FFFBD1\t}\t.ace-jsoneditor .ace_gutter-active-line {\tbackground-color : #dcdcdc\t}\t.ace-jsoneditor .ace_marker-layer .ace_selected-word {\tborder: 1px solid lightgray\t}\t.ace-jsoneditor .ace_invisible {\tcolor: #BFBFBF\t}\t.ace-jsoneditor .ace_keyword,\t.ace-jsoneditor .ace_meta,\t.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\tcolor: #AF956F\t}\t.ace-jsoneditor .ace_keyword.ace_operator {\tcolor: #484848\t}\t.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\tcolor: #96DC5F\t}\t.ace-jsoneditor .ace_constant.ace_language {\tcolor: darkorange\t}\t.ace-jsoneditor .ace_constant.ace_numeric {\tcolor: red\t}\t.ace-jsoneditor .ace_constant.ace_character.ace_entity {\tcolor: #BF78CC\t}\t.ace-jsoneditor .ace_invalid {\tcolor: #FFFFFF;\tbackground-color: #FF002A;\t}\t.ace-jsoneditor .ace_fold {\tbackground-color: #AF956F;\tborder-color: #000000\t}\t.ace-jsoneditor .ace_storage,\t.ace-jsoneditor .ace_support.ace_class,\t.ace-jsoneditor .ace_support.ace_function,\t.ace-jsoneditor .ace_support.ace_other,\t.ace-jsoneditor .ace_support.ace_type {\tcolor: #C52727\t}\t.ace-jsoneditor .ace_string {\tcolor: green\t}\t.ace-jsoneditor .ace_comment {\tcolor: #BCC8BA\t}\t.ace-jsoneditor .ace_entity.ace_name.ace_tag,\t.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\tcolor: #606060\t}\t.ace-jsoneditor .ace_markup.ace_underline {\ttext-decoration: underline\t}\t.ace-jsoneditor .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\t}',e("../lib/dom").importCssString(t.cssText,t.cssClass)})}])}); -//# sourceMappingURL=jsoneditor-minimalist.map \ No newline at end of file +undefined \ No newline at end of file diff --git a/dist/jsoneditor.js b/dist/jsoneditor.js index 5d849dc..2dc80d4 100644 --- a/dist/jsoneditor.js +++ b/dist/jsoneditor.js @@ -24,8 +24,8 @@ * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.7.0 - * @date 2017-05-26 + * @version 5.7.1 + * @date 2017-06-25 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -93,9 +93,9 @@ return /******/ (function(modules) { // webpackBootstrap // no problem... when we need Ajv we will throw a neat exception } - var treemode = __webpack_require__(2); - var textmode = __webpack_require__(13); - var util = __webpack_require__(5); + var treemode = __webpack_require__(54); + var textmode = __webpack_require__(65); + var util = __webpack_require__(57); /** * @constructor JSONEditor @@ -474,527 +474,508 @@ return /******/ (function(modules) { // webpackBootstrap /* 1 */ /***/ function(module, exports, __webpack_require__) { - var require;var require;/* WEBPACK VAR INJECTION */(function(global) {(function(f){if(true){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; - } - - - function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); - } - - - var DATE_TIME_SEPARATOR = /t|\s/i; - function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); - } - - - function hostname(str) { - // https://tools.ietf.org/html/rfc1034#section-3.5 - // https://tools.ietf.org/html/rfc1123#section-2 - return str.length <= 255 && HOSTNAME.test(str); - } - - - var NOT_URI_FRAGMENT = /\/|\:/; - function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); - } - - - function regex(str) { - try { - new RegExp(str); - return true; - } catch(e) { - return false; + function callValidate() { + var _validate = schemaObj.validate; + var result = _validate.apply(null, arguments); + callValidate.errors = _validate.errors; + return result; } } - function compareDate(d1, d2) { - if (!(d1 && d2)) return; - if (d1 > d2) return 1; - if (d1 < d2) return -1; - if (d1 === d2) return 0; - } - - - function compareTime(t1, t2) { - if (!(t1 && t2)) return; - t1 = t1.match(TIME); - t2 = t2.match(TIME); - if (!(t1 && t2)) return; - t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); - t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); - if (t1 > t2) return 1; - if (t1 < t2) return -1; - if (t1 === t2) return 0; - } - - - function compareDateTime(dt1, dt2) { - if (!(dt1 && dt2)) return; - dt1 = dt1.split(DATE_TIME_SEPARATOR); - dt2 = dt2.split(DATE_TIME_SEPARATOR); - var res = compareDate(dt1[0], dt2[0]); - if (res === undefined) return; - return res || compareTime(dt1[1], dt2[1]); - } - - },{"./util":11}],6:[function(require,module,exports){ - 'use strict'; - - var resolve = require('./resolve') - , util = require('./util') - , stableStringify = require('json-stable-stringify') - , async = require('../async'); - - var beautify; - - function loadBeautify(){ - if (beautify === undefined) { - var name = 'js-beautify'; - try { beautify = require(name).js_beautify; } - catch(e) { beautify = false; } + function chooseGetId(opts) { + switch (opts.schemaId) { + case '$id': return _get$Id; + case 'id': return _getId; + default: return _get$IdOrId; } } - var validateGenerator = require('../dotjs/validate'); + + function _getId(schema) { + if (schema.$id) console.warn('schema $id ignored', schema.$id); + return schema.id; + } + + + function _get$Id(schema) { + if (schema.id) console.warn('schema id ignored', schema.id); + return schema.$id; + } + + + function _get$IdOrId(schema) { + if (schema.$id && schema.id && schema.$id != schema.id) + throw new Error('schema $id is different from id'); + return schema.$id || schema.id; + } + + + /** + * Convert array of error message objects to string + * @this Ajv + * @param {Array} errors optional array of validation errors, if not passed errors from the instance are used. + * @param {Object} options optional options with properties `separator` and `dataVar`. + * @return {String} human readable string with all errors descriptions + */ + function errorsText(errors, options) { + errors = errors || this.errors; + if (!errors) return 'No errors'; + options = options || {}; + var separator = options.separator === undefined ? ', ' : options.separator; + var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; + + var text = ''; + for (var i=0; i', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = __webpack_require__(7); + + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; + } + + Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; } } } - for (var key in schema) - _resolveIds.call(this, schema[key], fullPath+'/'+util.escapeFragment(key), baseId); + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a puny coded representation of "domain". + // It only converts the part of the domain name that + // has non ASCII characters. I.e. it dosent matter if + // you call it with a domain that already is in ASCII. + var domainArray = this.hostname.split('.'); + var newOut = []; + for (var i = 0; i < domainArray.length; ++i) { + var s = domainArray[i]; + newOut.push(s.match(/[^A-Za-z0-9_-]/) ? + 'xn--' + punycode.encode(s) : s); + } + this.hostname = newOut.join('.'); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } } } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; + }; + + // format a parsed object into a url string + function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); } - },{"./equal":4,"./schema_obj":9,"./util":11,"url":50}],8:[function(require,module,exports){ - 'use strict'; + Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } - var ruleModules = require('./_rules') - , toHash = require('./util').toHash; + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; - module.exports = function rules() { - var RULES = [ - { type: 'number', - rules: [ 'maximum', 'minimum', 'multipleOf'] }, - { type: 'string', - rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, - { type: 'array', - rules: [ 'maxItems', 'minItems', 'uniqueItems', 'items' ] }, - { type: 'object', - rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'properties' ] }, - { rules: [ '$ref', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } - ]; + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } - var ALL = [ 'type', 'additionalProperties', 'patternProperties' ]; - var KEYWORDS = [ 'additionalItems', '$schema', 'id', 'title', 'description', 'default' ]; - var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; - RULES.all = toHash(ALL); + if (this.query && + isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } - RULES.forEach(function (group) { - group.rules = group.rules.map(function (keyword) { - ALL.push(keyword); - var rule = RULES.all[keyword] = { - keyword: keyword, - code: ruleModules[keyword] - }; - return rule; + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; + }; + + function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); + } + + Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); + }; + + function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); + } + + Url.prototype.resolveObject = function(relative) { + if (isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + Object.keys(this).forEach(function(k) { + result[k] = this[k]; + }, this); + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + Object.keys(relative).forEach(function(k) { + if (k !== 'protocol') + result[k] = relative[k]; }); - }); - RULES.keywords = toHash(ALL.concat(KEYWORDS)); - RULES.types = toHash(TYPES); - RULES.custom = {}; + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } - return RULES; + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + Object.keys(relative).forEach(function(k) { + result[k] = relative[k]; + }); + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host) && (last === '.' || last === '..') || + last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last == '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; }; - },{"./_rules":3,"./util":11}],9:[function(require,module,exports){ - 'use strict'; - - var util = require('./util'); - - module.exports = SchemaObject; - - function SchemaObject(obj) { - util.copy(obj, this); - } - - },{"./util":11}],10:[function(require,module,exports){ - 'use strict'; - - // https://mathiasbynens.be/notes/javascript-encoding - // https://github.com/bestiejs/punycode.js - punycode.ucs2.decode - module.exports = function ucs2length(str) { - var length = 0 - , len = str.length - , pos = 0 - , value; - while (pos < len) { - length++; - value = str.charCodeAt(pos++); - if (value >= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); } + host = host.substr(0, host.length - port.length); } - return length; + if (host) this.hostname = host; }; - },{}],11:[function(require,module,exports){ - 'use strict'; - - - module.exports = { - copy: copy, - checkDataType: checkDataType, - checkDataTypes: checkDataTypes, - coerceToTypes: coerceToTypes, - toHash: toHash, - getProperty: getProperty, - escapeQuotes: escapeQuotes, - ucs2length: require('./ucs2length'), - varOccurences: varOccurences, - varReplace: varReplace, - cleanUpCode: cleanUpCode, - cleanUpVarErrors: cleanUpVarErrors, - schemaHasRules: schemaHasRules, - schemaHasRulesExcept: schemaHasRulesExcept, - stableStringify: require('json-stable-stringify'), - toQuotedString: toQuotedString, - getPathExpr: getPathExpr, - getPath: getPath, - getData: getData, - unescapeFragment: unescapeFragment, - escapeFragment: escapeFragment, - escapeJsonPointer: escapeJsonPointer - }; - - - function copy(o, to) { - to = to || {}; - for (var key in o) to[key] = o[key]; - return to; - } - - - function checkDataType(dataType, data, negate) { - var EQUAL = negate ? ' !== ' : ' === ' - , AND = negate ? ' || ' : ' && ' - , OK = negate ? '!' : '' - , NOT = negate ? '' : '!'; - switch (dataType) { - case 'null': return data + EQUAL + 'null'; - case 'array': return OK + 'Array.isArray(' + data + ')'; - case 'object': return '(' + OK + data + AND + - 'typeof ' + data + EQUAL + '"object"' + AND + - NOT + 'Array.isArray(' + data + '))'; - case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + - NOT + '(' + data + ' % 1)' + - AND + data + EQUAL + data + ')'; - default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; - } - } - - - function checkDataTypes(dataTypes, data) { - switch (dataTypes.length) { - case 1: return checkDataType(dataTypes[0], data, true); - default: - var code = ''; - var types = toHash(dataTypes); - if (types.array && types.object) { - code = types.null ? '(': '(!' + data + ' || '; - code += 'typeof ' + data + ' !== "object")'; - delete types.null; - delete types.array; - delete types.object; - } - if (types.number) delete types.integer; - for (var t in types) - code += (code ? ' && ' : '' ) + checkDataType(t, data, true); - - return code; - } - } - - - var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); - function coerceToTypes(optionCoerceTypes, dataTypes) { - if (Array.isArray(dataTypes)) { - var types = []; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } - - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - data = 'data' + ((lvl - up) || ''); - if (!jsonPointer) return data; - } - - var expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i', - $result = 'result' + $lvl; - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_formatExclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var ' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = ' + ($exclusive) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); - if (!$exclusive) { - out += '='; - } - out += ' 0;'; - } - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '}'; - return out; - } - - },{}],14:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limit(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<'; - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && typeof ' + ($schemaValueExcl) + ' != \'undefined\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ') || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp); - if ($exclusive) { - out += '='; - } - out += ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') {'; - } - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],15:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limitItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],16:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limitLength(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],17:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limitProperties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],18:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_allOf(it, $keyword) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $currentBaseId = $it.baseId, - $allSchemasEmpty = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $allSchemasEmpty = false; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - if ($allSchemasEmpty) { - out += ' if (true) { '; - } else { - out += ' ' + ($closingBraces.slice(0, -1)) + ' '; - } - } - out = it.util.cleanUpCode(out); - return out; - } - - },{}],19:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_anyOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $noEmptySchema = $schema.every(function($sch) { - return it.util.schemaHasRules($sch, it.RULES.all); - }); - if ($noEmptySchema) { - var $currentBaseId = $it.baseId; - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - },{}],20:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_constant(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('constant') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to constant\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - return out; - } - - },{}],21:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_custom(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $rule = this, - $definition = 'definition' + $lvl, - $rDef = $rule.definition; - var $compile, $inline, $macro, $ruleValidate, $validateCode; - if ($isData && $rDef.$data) { - $validateCode = 'keywordValidate' + $lvl; - var $validateSchema = $rDef.validateSchema; - out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; - } else { - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); - $schemaValue = 'validate.schema' + $schemaPath; - $validateCode = $ruleValidate.code; - $compile = $rDef.compile; - $inline = $rDef.inline; - $macro = $rDef.macro; - } - var $ruleErrs = $validateCode + '.errors', - $i = 'i' + $lvl, - $ruleErr = 'ruleErr' + $lvl, - $asyncKeyword = $rDef.async; - if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); - if (!($inline || $macro)) { - out += '' + ($ruleErrs) + ' = null;'; - } - out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; - if ($validateSchema) { - out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') {'; - } - if ($inline) { - if ($rDef.statements) { - out += ' ' + ($ruleValidate.validate) + ' '; - } else { - out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; - } - } else if ($macro) { - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $ruleValidate.validate; - $it.schemaPath = ''; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($code); - } else { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - out += ' ' + ($validateCode) + '.call( '; - if (it.opts.passContext) { - out += 'this'; - } else { - out += 'self'; - } - if ($compile || $rDef.schema === false) { - out += ' , ' + ($data) + ' '; - } else { - out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; - } - out += ' , (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; - var def_callRuleValidate = out; - out = $$outStack.pop(); - if ($rDef.errors === false) { - out += ' ' + ($valid) + ' = '; - if ($asyncKeyword) { - out += '' + (it.yieldAwait); - } - out += '' + (def_callRuleValidate) + '; '; - } else { - if ($asyncKeyword) { - $ruleErrs = 'customErrors' + $lvl; - out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = ' + (it.yieldAwait) + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; - } else { - out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; - } - } - } - if ($rDef.modifying) { - out += ' ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; - } - if ($validateSchema) { - out += ' }'; - } - if ($rDef.valid) { - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - out += ' if ( '; - if ($rDef.valid === undefined) { - out += ' !'; - if ($macro) { - out += '' + ($nextValid); - } else { - out += '' + ($valid); - } - } else { - out += ' ' + (!$rDef.valid) + ' '; - } - out += ') { '; - $errorKeyword = $rule.keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - var def_customError = out; - out = $$outStack.pop(); - if ($inline) { - if ($rDef.errors) { - if ($rDef.errors != 'full') { - out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } else if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); - var $passData = $data + '[' + $idx + ']'; - $it.dataPathArr[$dataNxt] = $idx; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - },{}],26:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_multipleOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],27:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_not(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - var $allErrorsOption; - if ($it.opts.allErrors) { - $allErrorsOption = $it.opts.allErrors; - $it.opts.allErrors = false; - } - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (' + ($nextValid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; - } - - },{}],28:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_oneOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false;'; - var $currentBaseId = $it.baseId; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } else { - out += ' var ' + ($nextValid) + ' = true; '; - } - if ($i) { - out += ' if (' + ($nextValid) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - out += ' if (' + ($nextValid) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; - } - - },{}],29:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_pattern(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],30:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_patternRequired(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $key = 'key' + $lvl, - $matched = 'patternMatched' + $lvl, - $closingBraces = '', - $ownProperties = it.opts.ownProperties; - out += 'var ' + ($valid) + ' = true;'; - var arr1 = $schema; - if (arr1) { - var $pProperty, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $pProperty = arr1[i1 += 1]; - out += ' var ' + ($matched) + ' = false; for (var ' + ($key) + ' in ' + ($data) + ') { '; - if ($ownProperties) { - out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; - } - out += ' ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } '; - var $missingPattern = it.util.escapeQuotes($pProperty); - out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('patternRequired') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingPattern: \'' + ($missingPattern) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have property matching pattern \\\'' + ($missingPattern) + '\\\'\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - } - out += '' + ($closingBraces); - return out; - } - - },{}],31:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_properties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $key = 'key' + $lvl, - $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt; - var $schemaKeys = Object.keys($schema || {}), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, - $ownProperties = it.opts.ownProperties, - $currentBaseId = it.baseId; - var $required = it.schema.required; - if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); - if (it.opts.v5) { - var $pgProperties = it.schema.patternGroups || {}, - $pgPropertyKeys = Object.keys($pgProperties); - } - out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; - if ($checkAdditional) { - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - if ($ownProperties) { - out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; - } - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 5) { - out += ' || validate.schema' + ($schemaPath) + '[' + ($key) + '] '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; - } - } - } - if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) { - var arr3 = $pgPropertyKeys; - if (arr3) { - var $pgProperty, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $pgProperty = arr3[$i += 1]; - out += ' || ' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + ' + $key + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[' + ($key) + ']; '; - } else { - out += ' ' + ($nextValid) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have additional properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr4 = $schemaKeys; - if (arr4) { - var $propertyKey, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $propertyKey = arr4[i4 += 1]; - var $sch = $schema[$propertyKey]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if (' + ($useData) + ' === undefined) { ' + ($nextValid) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if (' + ($useData) + ' === undefined) { ' + ($nextValid) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - var arr5 = $pPropertyKeys; - if (arr5) { - var $pProperty, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $pProperty = arr5[i5 += 1]; - var $sch = $pProperties[$pProperty]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; - if ($ownProperties) { - out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; - } - out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (it.opts.v5) { - var arr6 = $pgPropertyKeys; - if (arr6) { - var $pgProperty, i6 = -1, - l6 = arr6.length - 1; - while (i6 < l6) { - $pgProperty = arr6[i6 += 1]; - var $pgSchema = $pgProperties[$pgProperty], - $sch = $pgSchema.schema; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; - $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; - out += ' var pgPropCount' + ($lvl) + ' = 0; for (var ' + ($key) + ' in ' + ($data) + ') { '; - if ($ownProperties) { - out += ' if (!Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($key) + ')) continue; '; - } - out += ' if (' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ')) { pgPropCount' + ($lvl) + '++; '; - $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); - var $passData = $data + '[' + $key + ']'; - $it.dataPathArr[$dataNxt] = $key; - var $code = it.validate($it); - $it.baseId = $currentBaseId; - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!' + ($nextValid) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else ' + ($nextValid) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - $closingBraces += '}'; - } - var $pgMin = $pgSchema.minimum, - $pgMax = $pgSchema.maximum; - if ($pgMin !== undefined || $pgMax !== undefined) { - out += ' var ' + ($valid) + ' = true; '; - var $currErrSchemaPath = $errSchemaPath; - if ($pgMin !== undefined) { - var $limit = $pgMin, - $reason = 'minimum', - $moreOrLess = 'less'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($pgMax !== undefined) { - out += ' else '; - } - } - if ($pgMax !== undefined) { - var $limit = $pgMax, - $reason = 'maximum', - $moreOrLess = 'more'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - },{}],32:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_ref(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $async, $refCode; - if ($schema == '#' || $schema == '#/') { - if (it.isRoot) { - $async = it.async; - $refCode = 'validate'; - } else { - $async = it.root.schema.$async === true; - $refCode = 'root.refVal[0]'; - } - } else { - var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); - if ($refVal === undefined) { - var $message = 'can\'t resolve reference ' + $schema + ' from id ' + it.baseId; - if (it.opts.missingRefs == 'fail') { - console.log($message); - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; - } - if (it.opts.verbose) { - out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - if ($breakOnError) { - out += ' if (false) { '; - } - } else if (it.opts.missingRefs == 'ignore') { - console.log($message); - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - var $error = new Error($message); - $error.missingRef = it.resolve.url(it.baseId, $schema); - $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef)); - throw $error; - } - } else if ($refVal.inline) { - var $it = it.util.copy(it); - $it.level++; - var $nextValid = 'valid' + $it.level; - $it.schema = $refVal.schema; - $it.schemaPath = ''; - $it.errSchemaPath = $schema; - var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); - out += ' ' + ($code) + ' '; - if ($breakOnError) { - out += ' if (' + ($nextValid) + ') { '; - } - } else { - $async = $refVal.$async === true; - $refCode = $refVal.code; - } - } - if ($refCode) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - if (it.opts.passContext) { - out += ' ' + ($refCode) + '.call(this, '; - } else { - out += ' ' + ($refCode) + '( '; - } - out += ' ' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; - var __callValidate = out; - out = $$outStack.pop(); - if ($async) { - if (!it.async) throw new Error('async schema referenced by sync schema'); - out += ' try { '; - if ($breakOnError) { - out += 'var ' + ($valid) + ' ='; - } - out += ' ' + (it.yieldAwait) + ' ' + (__callValidate) + '; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - } - } else { - out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } - } - return out; - } - - },{}],33:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_required(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - var $vSchema = 'schema' + $lvl; - if (!$isData) { - if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { - var $required = []; - var arr1 = $schema; - if (arr1) { - var $property, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $property = arr1[i1 += 1]; - var $propertySch = it.schema.properties[$property]; - if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var _$property, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - _$property = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty(_$property); - out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $reqProperty, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $reqProperty = arr3[i3 += 1]; - var $prop = it.util.getProperty($reqProperty), - $missingProperty = it.util.escapeQuotes($reqProperty); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $reqProperty, it.opts.jsonPointers); - } - out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; - } - - },{}],34:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_switch(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $nextValid = 'valid' + $it.level; - var $ifPassed = 'ifPassed' + it.level, - $currentBaseId = $it.baseId, - $shouldContinue; - out += 'var ' + ($ifPassed) + ';'; - var arr1 = $schema; - if (arr1) { - var $sch, $caseIndex = -1, - l1 = arr1.length - 1; - while ($caseIndex < l1) { - $sch = arr1[$caseIndex += 1]; - if ($caseIndex && !$shouldContinue) { - out += ' if (!' + ($ifPassed) + ') { '; - $closingBraces += '}'; - } - if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - $it.schema = $sch.if; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - $it.createErrors = true; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($ifPassed) + ' = ' + ($nextValid) + '; if (' + ($ifPassed) + ') { '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; - } else { - out += ' ' + ($ifPassed) + ' = true; '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - $it.baseId = $currentBaseId; - } - } - $shouldContinue = $sch.continue - } - } - out += '' + ($closingBraces) + 'var ' + ($valid) + ' = ' + ($nextValid) + '; '; - out = it.util.cleanUpCode(out); - return out; - } - - },{}],35:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_uniqueItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + it.util.getProperty($keyword); - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema && $schema.$data, - $schemaValue; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; - $schemaValue = 'schema' + $lvl; - } else { - $schemaValue = $schema; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - },{}],36:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_validate(it, $keyword) { - var out = ''; - var $async = it.schema.$async === true; - if (it.isTop) { - var $top = it.isTop, - $lvl = it.level = 0, - $dataLvl = it.dataLevel = 0, - $data = 'data'; - it.rootId = it.resolve.fullPath(it.root.schema.id); - it.baseId = it.baseId || it.rootId; - if ($async) { - it.async = true; - var $es7 = it.opts.async == 'es7'; - it.yieldAwait = $es7 ? 'await' : 'yield'; - } - delete it.isTop; - it.dataPathArr = [undefined]; - out += ' var validate = '; - if ($async) { - if ($es7) { - out += ' (async function '; - } else { - if (it.opts.async == 'co*') { - out += 'co.wrap'; - } - out += '(function* '; - } - } else { - out += ' (function '; - } - out += ' (data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; var vErrors = null; '; - out += ' var errors = 0; '; - out += ' if (rootData === undefined) rootData = data;'; - } else { - var $lvl = it.level, - $dataLvl = it.dataLevel, - $data = 'data' + ($dataLvl || ''); - if (it.schema.id) it.baseId = it.resolve.url(it.baseId, it.schema.id); - if ($async && !it.async) throw new Error('async schema in sync schema'); - out += ' var errs_' + ($lvl) + ' = errors;'; - } - var $valid = 'valid' + $lvl, - $breakOnError = !it.opts.allErrors, - $closingBraces1 = '', - $closingBraces2 = ''; - var $typeSchema = it.schema.type, - $typeIsArray = Array.isArray($typeSchema); - if ($typeSchema && it.opts.coerceTypes) { - var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); - if ($coerceToTypes) { - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type', - $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; - var $dataType = 'dataType' + $lvl, - $coerced = 'coerced' + $lvl; - out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; - if (it.opts.coerceTypes == 'array') { - out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; - } - out += ' var ' + ($coerced) + ' = undefined; '; - var $bracesCoercion = ''; - var arr1 = $coerceToTypes; - if (arr1) { - var $type, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $type = arr1[$i += 1]; - if ($i) { - out += ' if (' + ($coerced) + ' === undefined) { '; - $bracesCoercion += '}'; - } - if (it.opts.coerceTypes == 'array' && $type != 'array') { - out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; - } - if ($type == 'string') { - out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; - } else if ($type == 'number' || $type == 'integer') { - out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; - if ($type == 'integer') { - out += ' && !(' + ($data) + ' % 1)'; - } - out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; - } else if ($type == 'boolean') { - out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; - } else if ($type == 'null') { - out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; - } else if (it.opts.coerceTypes == 'array' && $type == 'array') { - out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; - } - } - } - out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', - $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; - out += ' ' + ($data) + ' = ' + ($coerced) + '; '; - if (!$dataLvl) { - out += 'if (' + ($parentData) + ' !== undefined)'; - } - out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } } '; - } - } - var $refKeywords; - if (it.schema.$ref && ($refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'))) { - if (it.opts.extendRefs == 'fail') { - throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '"'); - } else if (it.opts.extendRefs == 'ignore') { - $refKeywords = false; - console.log('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); - } else if (it.opts.extendRefs !== true) { - console.log('$ref: all keywords used in schema at path "' + it.errSchemaPath + '". It will change in the next major version, see issue #260. Use option { extendRefs: true } to keep current behaviour'); - } - } - if (it.schema.$ref && !$refKeywords) { - out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; - if ($breakOnError) { - out += ' } if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } else { - var arr2 = it.RULES; - if (arr2) { - var $rulesGroup, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $rulesGroup = arr2[i2 += 1]; - if ($shouldUseGroup($rulesGroup)) { - if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; - } - if (it.opts.useDefaults && !it.compositeRule) { - if ($rulesGroup.type == 'object' && it.schema.properties) { - var $schema = it.schema.properties, - $schemaKeys = Object.keys($schema); - var arr3 = $schemaKeys; - if (arr3) { - var $propertyKey, i3 = -1, - l3 = arr3.length - 1; - while (i3 < l3) { - $propertyKey = arr3[i3 += 1]; - var $sch = $schema[$propertyKey]; - if ($sch.default !== undefined) { - var $passData = $data + it.util.getProperty($propertyKey); - out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { - var arr4 = it.schema.items; - if (arr4) { - var $sch, $i = -1, - l4 = arr4.length - 1; - while ($i < l4) { - $sch = arr4[$i += 1]; - if ($sch.default !== undefined) { - var $passData = $data + '[' + $i + ']'; - out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; - if (it.opts.useDefaults == 'shared') { - out += ' ' + (it.useDefault($sch.default)) + ' '; - } else { - out += ' ' + (JSON.stringify($sch.default)) + ' '; - } - out += '; '; - } - } - } - } - } - var arr5 = $rulesGroup.rules; - if (arr5) { - var $rule, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $rule = arr5[i5 += 1]; - if ($shouldUseRule($rule)) { - out += ' ' + ($rule.code(it, $rule.keyword)) + ' '; - if ($breakOnError) { - $closingBraces1 += '}'; - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces1) + ' '; - $closingBraces1 = ''; - } - if ($rulesGroup.type) { - out += ' } '; - if ($typeSchema && $typeSchema === $rulesGroup.type) { - var $typeChecked = true; - out += ' else { '; - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - } - if ($breakOnError) { - out += ' if (errors === '; - if ($top) { - out += '0'; - } else { - out += 'errs_' + ($lvl); - } - out += ') { '; - $closingBraces2 += '}'; - } - } - } - } - } - if ($typeSchema && !$typeChecked && !(it.opts.coerceTypes && $coerceToTypes)) { - var $schemaPath = it.schemaPath + '.type', - $errSchemaPath = it.errSchemaPath + '/type', - $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; - out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ('type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be '; - if ($typeIsArray) { - out += '' + ($typeSchema.join(",")); - } else { - out += '' + ($typeSchema); - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ - if (it.async) { - out += ' throw new ValidationError([' + (__err) + ']); '; - } else { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - } - if ($breakOnError) { - out += ' ' + ($closingBraces2) + ' '; - } - if ($top) { - if ($async) { - out += ' if (errors === 0) return true; '; - out += ' else throw new ValidationError(vErrors); '; - } else { - out += ' validate.errors = vErrors; '; - out += ' return errors === 0; '; - } - out += ' }); return validate;'; - } else { - out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; - } - out = it.util.cleanUpCode(out); - if ($top && $breakOnError) { - out = it.util.cleanUpVarErrors(out, $async); - } - - function $shouldUseGroup($rulesGroup) { - for (var i = 0; i < $rulesGroup.rules.length; i++) - if ($shouldUseRule($rulesGroup.rules[i])) return true; - } - - function $shouldUseRule($rule) { - return it.schema[$rule.keyword] !== undefined || ($rule.keyword == 'properties' && (it.schema.additionalProperties === false || typeof it.schema.additionalProperties == 'object' || (it.schema.patternProperties && Object.keys(it.schema.patternProperties).length) || (it.opts.v5 && it.schema.patternGroups && Object.keys(it.schema.patternGroups).length))); - } - return out; - } - - },{}],37:[function(require,module,exports){ - 'use strict'; - - var IDENTIFIER = /^[a-z_$][a-z0-9_$\-]*$/i; - var customRuleCode = require('./dotjs/custom'); - - module.exports = { - add: addKeyword, - get: getKeyword, - remove: removeKeyword - }; - - /** - * Define custom keyword - * @this Ajv - * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). - * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. - */ - function addKeyword(keyword, definition) { - /* jshint validthis: true */ - /* eslint no-shadow: 0 */ - var RULES = this.RULES; - - if (RULES.keywords[keyword]) - throw new Error('Keyword ' + keyword + ' is already defined'); - - if (!IDENTIFIER.test(keyword)) - throw new Error('Keyword ' + keyword + ' is not a valid identifier'); - - if (definition) { - if (definition.macro && definition.valid !== undefined) - throw new Error('"valid" option cannot be used with macro keywords'); - - var dataType = definition.type; - if (Array.isArray(dataType)) { - var i, len = dataType.length; - for (i=0; i 2) res = slice.call(arguments, 1); - resolve(res); - }); - }); - } - - /** - * Convert an array of "yieldables" to a promise. - * Uses `Promise.all()` internally. - * - * @param {Array} obj - * @return {Promise} - * @api private - */ - - function arrayToPromise(obj) { - return Promise.all(obj.map(toPromise, this)); - } - - /** - * Convert an object of "yieldables" to a promise. - * Uses `Promise.all()` internally. - * - * @param {Object} obj - * @return {Promise} - * @api private - */ - - function objectToPromise(obj){ - var results = new obj.constructor(); - var keys = Object.keys(obj); - var promises = []; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var promise = toPromise.call(this, obj[key]); - if (promise && isPromise(promise)) defer(promise, key); - else results[key] = obj[key]; - } - return Promise.all(promises).then(function () { - return results; - }); - - function defer(promise, key) { - // predefine the key in the result - results[key] = undefined; - promises.push(promise.then(function (res) { - results[key] = res; - })); - } - } - - /** - * Check if `obj` is a promise. - * - * @param {Object} obj - * @return {Boolean} - * @api private - */ - - function isPromise(obj) { - return 'function' == typeof obj.then; - } - - /** - * Check if `obj` is a generator. - * - * @param {Mixed} obj - * @return {Boolean} - * @api private - */ - - function isGenerator(obj) { - return 'function' == typeof obj.next && 'function' == typeof obj.throw; - } - - /** - * Check if `obj` is a generator function. - * - * @param {Mixed} obj - * @return {Boolean} - * @api private - */ - function isGeneratorFunction(obj) { - var constructor = obj.constructor; - if (!constructor) return false; - if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true; - return isGenerator(constructor.prototype); - } - - /** - * Check for plain object. - * - * @param {Mixed} val - * @return {Boolean} - * @api private - */ - - function isObject(val) { - return Object == val.constructor; - } - - },{}],42:[function(require,module,exports){ - var json = typeof JSON !== 'undefined' ? JSON : require('jsonify'); - - module.exports = function (obj, opts) { - if (!opts) opts = {}; - if (typeof opts === 'function') opts = { cmp: opts }; - var space = opts.space || ''; - if (typeof space === 'number') space = Array(space+1).join(' '); - var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; - var replacer = opts.replacer || function(key, value) { return value; }; - - var cmp = opts.cmp && (function (f) { - return function (node) { - return function (a, b) { - var aobj = { key: a, value: node[a] }; - var bobj = { key: b, value: node[b] }; - return f(aobj, bobj); - }; - }; - })(opts.cmp); - - var seen = []; - return (function stringify (parent, key, node, level) { - var indent = space ? ('\n' + new Array(level + 1).join(space)) : ''; - var colonSeparator = space ? ': ' : ':'; - - if (node && node.toJSON && typeof node.toJSON === 'function') { - node = node.toJSON(); - } - - node = replacer.call(parent, key, node); - - if (node === undefined) { - return; - } - if (typeof node !== 'object' || node === null) { - return json.stringify(node); - } - if (isArray(node)) { - var out = []; - for (var i = 0; i < node.length; i++) { - var item = stringify(node, i, node[i], level+1) || json.stringify(null); - out.push(indent + space + item); - } - return '[' + out.join(',') + indent + ']'; - } - else { - if (seen.indexOf(node) !== -1) { - if (cycles) return json.stringify('__cycle__'); - throw new TypeError('Converting circular structure to JSON'); - } - else seen.push(node); - - var keys = objectKeys(node).sort(cmp && cmp(node)); - var out = []; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = stringify(node, key, node[key], level+1); - - if(!value) continue; - - var keyValue = json.stringify(key) - + colonSeparator - + value; - ; - out.push(indent + space + keyValue); - } - seen.splice(seen.indexOf(node), 1); - return '{' + out.join(',') + indent + '}'; - } - })({ '': obj }, '', obj, 0); - }; - - var isArray = Array.isArray || function (x) { - return {}.toString.call(x) === '[object Array]'; - }; - - var objectKeys = Object.keys || function (obj) { - var has = Object.prototype.hasOwnProperty || function () { return true }; - var keys = []; - for (var key in obj) { - if (has.call(obj, key)) keys.push(key); - } - return keys; - }; - - },{"jsonify":43}],43:[function(require,module,exports){ - exports.parse = require('./lib/parse'); - exports.stringify = require('./lib/stringify'); - - },{"./lib/parse":44,"./lib/stringify":45}],44:[function(require,module,exports){ - var at, // The index of the current character - ch, // The current character - escapee = { - '"': '"', - '\\': '\\', - '/': '/', - b: '\b', - f: '\f', - n: '\n', - r: '\r', - t: '\t' - }, - text, - - error = function (m) { - // Call error when something is wrong. - throw { - name: 'SyntaxError', - message: m, - at: at, - text: text - }; - }, - - next = function (c) { - // If a c parameter is provided, verify that it matches the current character. - if (c && c !== ch) { - error("Expected '" + c + "' instead of '" + ch + "'"); - } - - // Get the next character. When there are no more characters, - // return the empty string. - - ch = text.charAt(at); - at += 1; - return ch; - }, - - number = function () { - // Parse a number value. - var number, - string = ''; - - if (ch === '-') { - string = '-'; - next('-'); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (!isFinite(number)) { - error("Bad number"); - } else { - return number; - } - }, - - string = function () { - // Parse a string value. - var hex, - i, - string = '', - uffff; - - // When parsing for string values, we must look for " and \ characters. - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } else if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - - // Skip whitespace. - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - - // true, false, or null. - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - - // Parse an array value. - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - - // Parse an object value. - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - - value = function () { - - // Parse a JSON value. It could be an object, an array, a string, a number, - // or a word. - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' ? number() : word(); - } - }; - - // Return the json_parse function. It will have access to all of the above - // functions and variables. - - module.exports = function (source, reviver) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - // If there is a reviver function, we recursively walk the new structure, - // passing each name/value pair to the reviver function for possible - // transformation, starting with a temporary root object that holds the result - // in an empty key. If there is not a reviver function, we simply return the - // result. - - return typeof reviver === 'function' ? (function walk(holder, key) { - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - }({'': result}, '')) : result; - }; - - },{}],45:[function(require,module,exports){ - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - function quote(string) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - function str(key, holder) { - // Produce a string from holder[key]. - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - // JSON numbers must be finite. Encode non-finite numbers as null. - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - return String(value); - - case 'object': - if (!value) return 'null'; - gap += indent; - partial = []; - - // Array.isArray - if (Object.prototype.toString.apply(value) === '[object Array]') { - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and - // wrap them in brackets. - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be - // stringified. - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - else { - // Otherwise, iterate through all of the keys in the object. - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; - } + function isNullOrUndefined(arg) { + return arg == null; } - module.exports = function (value, replacer, space) { - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - } - // If the space parameter is a string, it will be used as the indent string. - else if (typeof space === 'string') { - indent = space; - } - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - rep = replacer; - if (replacer && typeof replacer !== 'function' - && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - return str('', {'': value}); - }; +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { - },{}],46:[function(require,module,exports){ - (function (global){ - /*! https://mths.be/punycode v1.4.1 by @mathias */ + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */ ;(function(root) { /** Detect free variables */ @@ -6673,7 +2392,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {Error} Throws a `RangeError` with the applicable error message. */ function error(type) { - throw new RangeError(errors[type]); + throw RangeError(errors[type]); } /** @@ -6820,7 +2539,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 + * http://tools.ietf.org/html/rfc3492#section-3.4 * @private */ function adapt(delta, numPoints, firstTime) { @@ -7095,7 +2814,7 @@ return /******/ (function(modules) { // webpackBootstrap * @memberOf punycode * @type String */ - 'version': '1.4.1', + 'version': '1.3.2', /** * An object of methods to convert from JavaScript's internal character * representation (UCS-2) to Unicode code points, and back. @@ -7117,32 +2836,57 @@ return /******/ (function(modules) { // webpackBootstrap // Some AMD build optimizers, like r.js, check for specific condition patterns // like the following: if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd + true ) { - define('punycode', function() { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { return punycode; - }); + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ + if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- + } else { // in Narwhal or RingoJS v0.7.0- for (key in punycode) { punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); } } - } else { - // in Rhino or a web browser + } else { // in Rhino or a web browser root.punycode = punycode; } }(this)); - }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - },{}],47:[function(require,module,exports){ + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)(module), (function() { return this; }()))) + +/***/ }, +/* 6 */ +/***/ function(module, exports) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + exports.decode = exports.parse = __webpack_require__(8); + exports.encode = exports.stringify = __webpack_require__(9); + + +/***/ }, +/* 8 */ +/***/ function(module, exports) { + // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -7214,7 +2958,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!hasOwnProperty(obj, k)) { obj[k] = v; - } else if (isArray(obj[k])) { + } else if (Array.isArray(obj[k])) { obj[k].push(v); } else { obj[k] = [obj[k], v]; @@ -7224,11 +2968,11 @@ return /******/ (function(modules) { // webpackBootstrap return obj; }; - var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; - }; - },{}],48:[function(require,module,exports){ +/***/ }, +/* 9 */ +/***/ function(module, exports) { + // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -7276,10 +3020,10 @@ return /******/ (function(modules) { // webpackBootstrap } if (typeof obj === 'object') { - return map(objectKeys(obj), function(k) { + return Object.keys(obj).map(function(k) { var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (isArray(obj[k])) { - return map(obj[k], function(v) { + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { return ks + encodeURIComponent(stringifyPrimitive(v)); }).join(sep); } else { @@ -7294,1225 +3038,5428 @@ return /******/ (function(modules) { // webpackBootstrap encodeURIComponent(stringifyPrimitive(obj)); }; - var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; - }; - - function map (xs, f) { - if (xs.map) return xs.map(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - res.push(f(xs[i], i)); - } - return res; - } - - var objectKeys = Object.keys || function (obj) { - var res = []; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; - }; - - },{}],49:[function(require,module,exports){ - 'use strict'; - - exports.decode = exports.parse = require('./decode'); - exports.encode = exports.stringify = require('./encode'); - - },{"./decode":47,"./encode":48}],50:[function(require,module,exports){ - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - 'use strict'; - - var punycode = require('punycode'); - var util = require('./util'); - - exports.parse = urlParse; - exports.resolve = urlResolve; - exports.resolveObject = urlResolveObject; - exports.format = urlFormat; - - exports.Url = Url; - - function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.host = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.query = null; - this.pathname = null; - this.path = null; - this.href = null; - } - - // Reference: RFC 3986, RFC 1808, RFC 2396 - - // define these here so at least they only have to be - // compiled once on the first module load. - var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // Special case for a simple path URL - simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, - - // RFC 2396: characters reserved for delimiting URLs. - // We actually just auto-escape these. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('querystring'); - - function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && util.isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; - } - - Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!util.isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - // Copy chrome, IE, opera backslash-handling behavior. - // Back slashes before the query string get converted to forward slashes - // See: https://code.google.com/p/chromium/issues/detail?id=25916 - var queryIndex = url.indexOf('?'), - splitter = - (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', - uSplit = url.split(splitter), - slashRegex = /\\/g; - uSplit[0] = uSplit[0].replace(slashRegex, '/'); - url = uSplit.join(splitter); - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.path = rest; - this.href = rest; - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - if (parseQueryString) { - this.query = querystring.parse(this.search.substr(1)); - } else { - this.query = this.search.substr(1); - } - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a punycoded representation of "domain". - // It only converts parts of the domain name that - // have non-ASCII characters, i.e. it doesn't matter if - // you call it with a domain that already is ASCII-only. - this.hostname = punycode.toASCII(this.hostname); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - if (rest.indexOf(ae) === -1) - continue; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; - }; - - // format a parsed object into a url string - function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (util.isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); - } - - Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - util.isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; - }; - - function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); - } - - Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); - }; - - function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); - } - - Url.prototype.resolveObject = function(relative) { - if (util.isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - var tkeys = Object.keys(this); - for (var tk = 0; tk < tkeys.length; tk++) { - var tkey = tkeys[tk]; - result[tkey] = this[tkey]; - } - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - var rkeys = Object.keys(relative); - for (var rk = 0; rk < rkeys.length; rk++) { - var rkey = rkeys[rk]; - if (rkey !== 'protocol') - result[rkey] = relative[rkey]; - } - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - var keys = Object.keys(relative); - for (var v = 0; v < keys.length; v++) { - var k = keys[v]; - result[k] = relative[k]; - } - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!util.isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host || srcPath.length > 1) && - (last === '.' || last === '..') || last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last === '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - }; - - Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; - }; - - },{"./util":51,"punycode":46,"querystring":49}],51:[function(require,module,exports){ - 'use strict'; - - module.exports = { - isString: function(arg) { - return typeof(arg) === 'string'; - }, - isObject: function(arg) { - return typeof(arg) === 'object' && arg !== null; - }, - isNull: function(arg) { - return arg === null; - }, - isNullOrUndefined: function(arg) { - return arg == null; - } - }; - - },{}],"ajv":[function(require,module,exports){ - 'use strict'; - - var compileSchema = require('./compile') - , resolve = require('./compile/resolve') - , Cache = require('./cache') - , SchemaObject = require('./compile/schema_obj') - , stableStringify = require('json-stable-stringify') - , formats = require('./compile/formats') - , rules = require('./compile/rules') - , v5 = require('./v5') - , util = require('./compile/util') - , async = require('./async') - , co = require('co'); - - module.exports = Ajv; - - Ajv.prototype.compileAsync = async.compile; - - var customKeyword = require('./keyword'); - Ajv.prototype.addKeyword = customKeyword.add; - Ajv.prototype.getKeyword = customKeyword.get; - Ajv.prototype.removeKeyword = customKeyword.remove; - Ajv.ValidationError = require('./compile/validation_error'); - - var META_SCHEMA_ID = 'http://json-schema.org/draft-04/schema'; - var SCHEMA_URI_FORMAT = /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i; - function SCHEMA_URI_FORMAT_FUNC(str) { - return SCHEMA_URI_FORMAT.test(str); - } - - var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ]; - - /** - * Creates validator instance. - * Usage: `Ajv(opts)` - * @param {Object} opts optional options - * @return {Object} ajv instance - */ - function Ajv(opts) { - if (!(this instanceof Ajv)) return new Ajv(opts); - var self = this; - - opts = this._opts = util.copy(opts) || {}; - this._schemas = {}; - this._refs = {}; - this._fragments = {}; - this._formats = formats(opts.format); - this._cache = opts.cache || new Cache; - this._loadingSchemas = {}; - this._compilations = []; - this.RULES = rules(); - - // this is done on purpose, so that methods are bound to the instance - // (without using bind) so that they can be used without the instance - this.validate = validate; - this.compile = compile; - this.addSchema = addSchema; - this.addMetaSchema = addMetaSchema; - this.validateSchema = validateSchema; - this.getSchema = getSchema; - this.removeSchema = removeSchema; - this.addFormat = addFormat; - this.errorsText = errorsText; - - this._addSchema = _addSchema; - this._compile = _compile; - - opts.loopRequired = opts.loopRequired || Infinity; - if (opts.async || opts.transpile) async.setup(opts); - if (opts.beautify === true) opts.beautify = { indent_size: 2 }; - if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; - this._metaOpts = getMetaSchemaOptions(); - - if (opts.formats) addInitialFormats(); - addDraft4MetaSchema(); - if (opts.v5) v5.enable(this); - if (typeof opts.meta == 'object') addMetaSchema(opts.meta); - addInitialSchemas(); - - - /** - * Validate data using schema - * Schema will be compiled and cached (using serialized JSON as key. [json-stable-stringify](https://github.com/substack/json-stable-stringify) is used to serialize. - * @param {String|Object} schemaKeyRef key, ref or schema object - * @param {Any} data to be validated - * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). - */ - function validate(schemaKeyRef, data) { - var v; - if (typeof schemaKeyRef == 'string') { - v = getSchema(schemaKeyRef); - if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); - } else { - var schemaObj = _addSchema(schemaKeyRef); - v = schemaObj.validate || _compile(schemaObj); - } - - var valid = v(data); - if (v.$async === true) - return self._opts.async == '*' ? co(valid) : valid; - self.errors = v.errors; - return valid; - } - - - /** - * Create validating function for passed schema. - * @param {Object} schema schema object - * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. - * @return {Function} validating function - */ - function compile(schema, _meta) { - var schemaObj = _addSchema(schema, undefined, _meta); - return schemaObj.validate || _compile(schemaObj); - } - - - /** - * Adds schema to the instance. - * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. - * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. - * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. - * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. - */ - function addSchema(schema, key, _skipValidation, _meta) { - if (Array.isArray(schema)){ - for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. - * @param {Object} options optional options with properties `separator` and `dataVar`. - * @return {String} human readable string with all errors descriptions - */ - function errorsText(errors, options) { - errors = errors || self.errors; - if (!errors) return 'No errors'; - options = options || {}; - var separator = options.separator === undefined ? ', ' : options.separator; - var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; - - var text = ''; - for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } + + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + data = 'data' + ((lvl - up) || ''); + if (!jsonPointer) return data; + } + + var expr = data; + var segments = jsonPointer.split('/'); + for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + } + } + return length; + }; + + +/***/ }, +/* 13 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(11); + + module.exports = SchemaObject; + + function SchemaObject(obj) { + util.copy(obj, this); + } + + +/***/ }, +/* 14 */ +/***/ function(module, exports) { + + 'use strict'; + + var traverse = module.exports = function (schema, opts, cb) { + if (typeof opts == 'function') { + cb = opts; + opts = {}; + } + _traverse(opts, cb, schema, '', schema); + }; + + + traverse.keywords = { + additionalItems: true, + items: true, + contains: true, + additionalProperties: true, + propertyNames: true, + not: true + }; + + traverse.arrayKeywords = { + items: true, + allOf: true, + anyOf: true, + oneOf: true + }; + + traverse.propsKeywords = { + definitions: true, + properties: true, + patternProperties: true, + dependencies: true + }; + + traverse.skipKeywords = { + enum: true, + const: true, + required: true, + maximum: true, + minimum: true, + exclusiveMaximum: true, + exclusiveMinimum: true, + multipleOf: true, + maxLength: true, + minLength: true, + pattern: true, + format: true, + maxItems: true, + minItems: true, + uniqueItems: true, + maxProperties: true, + minProperties: true + }; + + + function _traverse(opts, cb, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { + if (schema && typeof schema == 'object' && !Array.isArray(schema)) { + cb(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); + for (var key in schema) { + var sch = schema[key]; + if (Array.isArray(sch)) { + if (key in traverse.arrayKeywords) { + for (var i=0; i= '0' && ch <= '9') { + string += ch; + next(); + } + if (ch === '.') { + string += '.'; + while (next() && ch >= '0' && ch <= '9') { + string += ch; + } + } + if (ch === 'e' || ch === 'E') { + string += ch; + next(); + if (ch === '-' || ch === '+') { + string += ch; + next(); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + } + number = +string; + if (!isFinite(number)) { + error("Bad number"); + } else { + return number; + } + }, + + string = function () { + // Parse a string value. + var hex, + i, + string = '', + uffff; + + // When parsing for string values, we must look for " and \ characters. + if (ch === '"') { + while (next()) { + if (ch === '"') { + next(); + return string; + } else if (ch === '\\') { + next(); + if (ch === 'u') { + uffff = 0; + for (i = 0; i < 4; i += 1) { + hex = parseInt(next(), 16); + if (!isFinite(hex)) { + break; + } + uffff = uffff * 16 + hex; + } + string += String.fromCharCode(uffff); + } else if (typeof escapee[ch] === 'string') { + string += escapee[ch]; + } else { + break; + } + } else { + string += ch; + } + } + } + error("Bad string"); + }, + + white = function () { + + // Skip whitespace. + + while (ch && ch <= ' ') { + next(); + } + }, + + word = function () { + + // true, false, or null. + + switch (ch) { + case 't': + next('t'); + next('r'); + next('u'); + next('e'); + return true; + case 'f': + next('f'); + next('a'); + next('l'); + next('s'); + next('e'); + return false; + case 'n': + next('n'); + next('u'); + next('l'); + next('l'); + return null; + } + error("Unexpected '" + ch + "'"); + }, + + value, // Place holder for the value function. + + array = function () { + + // Parse an array value. + + var array = []; + + if (ch === '[') { + next('['); + white(); + if (ch === ']') { + next(']'); + return array; // empty array + } + while (ch) { + array.push(value()); + white(); + if (ch === ']') { + next(']'); + return array; + } + next(','); + white(); + } + } + error("Bad array"); + }, + + object = function () { + + // Parse an object value. + + var key, + object = {}; + + if (ch === '{') { + next('{'); + white(); + if (ch === '}') { + next('}'); + return object; // empty object + } + while (ch) { + key = string(); + white(); + next(':'); + if (Object.hasOwnProperty.call(object, key)) { + error('Duplicate key "' + key + '"'); + } + object[key] = value(); + white(); + if (ch === '}') { + next('}'); + return object; + } + next(','); + white(); + } + } + error("Bad object"); + }; + + value = function () { + + // Parse a JSON value. It could be an object, an array, a string, a number, + // or a word. + + white(); + switch (ch) { + case '{': + return object(); + case '[': + return array(); + case '"': + return string(); + case '-': + return number(); + default: + return ch >= '0' && ch <= '9' ? number() : word(); + } + }; + + // Return the json_parse function. It will have access to all of the above + // functions and variables. + + module.exports = function (source, reviver) { + var result; + + text = source; + at = 0; + ch = ' '; + result = value(); + white(); + if (ch) { + error("Syntax error"); + } + + // If there is a reviver function, we recursively walk the new structure, + // passing each name/value pair to the reviver function for possible + // transformation, starting with a temporary root object that holds the result + // in an empty key. If there is not a reviver function, we simply return the + // result. + + return typeof reviver === 'function' ? (function walk(holder, key) { + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + }({'': result}, '')) : result; + }; + + +/***/ }, +/* 19 */ +/***/ function(module, exports) { + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + function quote(string) { + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + function str(key, holder) { + // Produce a string from holder[key]. + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + + // If the value has a toJSON method, call it to obtain a replacement value. + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + + // If we were called with a replacer function, then call the replacer to + // obtain a replacement value. + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + + // What happens next depends on the value's type. + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + // JSON numbers must be finite. Encode non-finite numbers as null. + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + // If the value is a boolean or null, convert it to a string. Note: + // typeof null does not produce 'null'. The case is included here in + // the remote chance that this gets fixed someday. + return String(value); + + case 'object': + if (!value) return 'null'; + gap += indent; + partial = []; + + // Array.isArray + if (Object.prototype.toString.apply(value) === '[object Array]') { + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + + // Join all of the elements together, separated with commas, and + // wrap them in brackets. + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + + // If the replacer is an array, use it to select the members to be + // stringified. + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + else { + // Otherwise, iterate through all of the keys in the object. + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + + // Join all of the member texts together, separated with commas, + // and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + + module.exports = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + + // If the space parameter is a number, make an indent string containing that + // many spaces. + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + } + // If the space parameter is a string, it will be used as the indent string. + else if (typeof space === 'string') { + indent = space; + } + + // If there is a replacer, it must be a function or an array. + // Otherwise, throw an error. + rep = replacer; + if (replacer && typeof replacer !== 'function' + && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + + // Make a fake root object containing our value under the key of ''. + // Return the result of stringifying the value. + return str('', {'': value}); + }; + + +/***/ }, +/* 20 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_validate(it, $keyword, $ruleType) { + var out = ''; + var $async = it.schema.$async === true, + $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'), + $id = it.self._getId(it.schema); + if (it.isTop) { + if ($async) { + it.async = true; + var $es7 = it.opts.async == 'es7'; + it.yieldAwait = $es7 ? 'await' : 'yield'; + } + out += ' var validate = '; + if ($async) { + if ($es7) { + out += ' (async function '; + } else { + if (it.opts.async != '*') { + out += 'co.wrap'; + } + out += '(function* '; + } + } else { + out += ' (function '; + } + out += ' (data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; '; + if ($id && (it.opts.sourceCode || it.opts.processCode)) { + out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' '; + } + } + if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) { + var $keyword = 'false schema'; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + if (it.schema === false) { + if (it.isTop) { + $breakOnError = true; + } else { + out += ' var ' + ($valid) + ' = false; '; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'boolean schema is false\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } else { + if (it.isTop) { + if ($async) { + out += ' return data; '; + } else { + out += ' validate.errors = null; return true; '; + } + } else { + out += ' var ' + ($valid) + ' = true; '; + } + } + if (it.isTop) { + out += ' }); return validate; '; + } + return out; + } + if (it.isTop) { + var $top = it.isTop, + $lvl = it.level = 0, + $dataLvl = it.dataLevel = 0, + $data = 'data'; + it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); + it.baseId = it.baseId || it.rootId; + delete it.isTop; + it.dataPathArr = [undefined]; + out += ' var vErrors = null; '; + out += ' var errors = 0; '; + out += ' if (rootData === undefined) rootData = data; '; + } else { + var $lvl = it.level, + $dataLvl = it.dataLevel, + $data = 'data' + ($dataLvl || ''); + if ($id) it.baseId = it.resolve.url(it.baseId, $id); + if ($async && !it.async) throw new Error('async schema in sync schema'); + out += ' var errs_' + ($lvl) + ' = errors;'; + } + var $valid = 'valid' + $lvl, + $breakOnError = !it.opts.allErrors, + $closingBraces1 = '', + $closingBraces2 = ''; + var $errorKeyword; + var $typeSchema = it.schema.type, + $typeIsArray = Array.isArray($typeSchema); + if ($typeIsArray && $typeSchema.length == 1) { + $typeSchema = $typeSchema[0]; + $typeIsArray = false; + } + if (it.schema.$ref && $refKeywords) { + if (it.opts.extendRefs == 'fail') { + throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); + } else if (it.opts.extendRefs !== true) { + $refKeywords = false; + console.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); + } + } + if ($typeSchema) { + if (it.opts.coerceTypes) { + var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); + } + var $rulesGroup = it.RULES.types[$typeSchema]; + if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) { + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type'; + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type', + $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; + out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { '; + if ($coerceToTypes) { + var $dataType = 'dataType' + $lvl, + $coerced = 'coerced' + $lvl; + out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; '; + if (it.opts.coerceTypes == 'array') { + out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; '; + } + out += ' var ' + ($coerced) + ' = undefined; '; + var $bracesCoercion = ''; + var arr1 = $coerceToTypes; + if (arr1) { + var $type, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $type = arr1[$i += 1]; + if ($i) { + out += ' if (' + ($coerced) + ' === undefined) { '; + $bracesCoercion += '}'; + } + if (it.opts.coerceTypes == 'array' && $type != 'array') { + out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } '; + } + if ($type == 'string') { + out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; + } else if ($type == 'number' || $type == 'integer') { + out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; + if ($type == 'integer') { + out += ' && !(' + ($data) + ' % 1)'; + } + out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; + } else if ($type == 'boolean') { + out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; + } else if ($type == 'null') { + out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; + } else if (it.opts.coerceTypes == 'array' && $type == 'array') { + out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; + } + } + } + out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' ' + ($data) + ' = ' + ($coerced) + '; '; + if (!$dataLvl) { + out += 'if (' + ($parentData) + ' !== undefined)'; + } + out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } '; + } else { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' } '; + } + } + if (it.schema.$ref && !$refKeywords) { + out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; + if ($breakOnError) { + out += ' } if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } else { + if (it.opts.v5 && it.schema.patternGroups) { + console.warn('keyword "patternGroups" is deprecated and disabled. Use option patternGroups: true to enable.'); + } + var arr2 = it.RULES; + if (arr2) { + var $rulesGroup, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $rulesGroup = arr2[i2 += 1]; + if ($shouldUseGroup($rulesGroup)) { + if ($rulesGroup.type) { + out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; + } + if (it.opts.useDefaults && !it.compositeRule) { + if ($rulesGroup.type == 'object' && it.schema.properties) { + var $schema = it.schema.properties, + $schemaKeys = Object.keys($schema); + var arr3 = $schemaKeys; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $sch = $schema[$propertyKey]; + if ($sch.default !== undefined) { + var $passData = $data + it.util.getProperty($propertyKey); + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { + var arr4 = it.schema.items; + if (arr4) { + var $sch, $i = -1, + l4 = arr4.length - 1; + while ($i < l4) { + $sch = arr4[$i += 1]; + if ($sch.default !== undefined) { + var $passData = $data + '[' + $i + ']'; + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } + } + var arr5 = $rulesGroup.rules; + if (arr5) { + var $rule, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $rule = arr5[i5 += 1]; + if ($shouldUseRule($rule)) { + var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); + if ($code) { + out += ' ' + ($code) + ' '; + if ($breakOnError) { + $closingBraces1 += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces1) + ' '; + $closingBraces1 = ''; + } + if ($rulesGroup.type) { + out += ' } '; + if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { + out += ' else { '; + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + } + if ($breakOnError) { + out += ' if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces2) + ' '; + } + if ($top) { + if ($async) { + out += ' if (errors === 0) return data; '; + out += ' else throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; '; + out += ' return errors === 0; '; + } + out += ' }); return validate;'; + } else { + out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; + } + out = it.util.cleanUpCode(out); + if ($top) { + out = it.util.finalCleanUpCode(out, $async); + } + + function $shouldUseGroup($rulesGroup) { + var rules = $rulesGroup.rules; + for (var i = 0; i < rules.length; i++) + if ($shouldUseRule(rules[i])) return true; + } + + function $shouldUseRule($rule) { + return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImlementsSomeKeyword($rule)); + } + + function $ruleImlementsSomeKeyword($rule) { + var impl = $rule.implements; + for (var i = 0; i < impl.length; i++) + if (it.schema[impl[i]] !== undefined) return true; + } + return out; + } + + +/***/ }, +/* 21 */ +/***/ function(module, exports) { + + + /** + * slice() reference. + */ + + var slice = Array.prototype.slice; + + /** + * Expose `co`. + */ + + module.exports = co['default'] = co.co = co; + + /** + * Wrap the given generator `fn` into a + * function that returns a promise. + * This is a separate function so that + * every `co()` call doesn't create a new, + * unnecessary closure. + * + * @param {GeneratorFunction} fn + * @return {Function} + * @api public + */ + + co.wrap = function (fn) { + createPromise.__generatorFunction__ = fn; + return createPromise; + function createPromise() { + return co.call(this, fn.apply(this, arguments)); + } + }; + + /** + * Execute the generator function or a generator + * and return a promise. + * + * @param {Function} fn + * @return {Promise} + * @api public + */ + + function co(gen) { + var ctx = this; + var args = slice.call(arguments, 1) + + // we wrap everything in a promise to avoid promise chaining, + // which leads to memory leak errors. + // see https://github.com/tj/co/issues/180 + return new Promise(function(resolve, reject) { + if (typeof gen === 'function') gen = gen.apply(ctx, args); + if (!gen || typeof gen.next !== 'function') return resolve(gen); + + onFulfilled(); + + /** + * @param {Mixed} res + * @return {Promise} + * @api private + */ + + function onFulfilled(res) { + var ret; + try { + ret = gen.next(res); + } catch (e) { + return reject(e); + } + next(ret); + } + + /** + * @param {Error} err + * @return {Promise} + * @api private + */ + + function onRejected(err) { + var ret; + try { + ret = gen.throw(err); + } catch (e) { + return reject(e); + } + next(ret); + } + + /** + * Get the next value in the generator, + * return a promise. + * + * @param {Object} ret + * @return {Promise} + * @api private + */ + + function next(ret) { + if (ret.done) return resolve(ret.value); + var value = toPromise.call(ctx, ret.value); + if (value && isPromise(value)) return value.then(onFulfilled, onRejected); + return onRejected(new TypeError('You may only yield a function, promise, generator, array, or object, ' + + 'but the following object was passed: "' + String(ret.value) + '"')); + } + }); + } + + /** + * Convert a `yield`ed value into a promise. + * + * @param {Mixed} obj + * @return {Promise} + * @api private + */ + + function toPromise(obj) { + if (!obj) return obj; + if (isPromise(obj)) return obj; + if (isGeneratorFunction(obj) || isGenerator(obj)) return co.call(this, obj); + if ('function' == typeof obj) return thunkToPromise.call(this, obj); + if (Array.isArray(obj)) return arrayToPromise.call(this, obj); + if (isObject(obj)) return objectToPromise.call(this, obj); + return obj; + } + + /** + * Convert a thunk to a promise. + * + * @param {Function} + * @return {Promise} + * @api private + */ + + function thunkToPromise(fn) { + var ctx = this; + return new Promise(function (resolve, reject) { + fn.call(ctx, function (err, res) { + if (err) return reject(err); + if (arguments.length > 2) res = slice.call(arguments, 1); + resolve(res); + }); + }); + } + + /** + * Convert an array of "yieldables" to a promise. + * Uses `Promise.all()` internally. + * + * @param {Array} obj + * @return {Promise} + * @api private + */ + + function arrayToPromise(obj) { + return Promise.all(obj.map(toPromise, this)); + } + + /** + * Convert an object of "yieldables" to a promise. + * Uses `Promise.all()` internally. + * + * @param {Object} obj + * @return {Promise} + * @api private + */ + + function objectToPromise(obj){ + var results = new obj.constructor(); + var keys = Object.keys(obj); + var promises = []; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var promise = toPromise.call(this, obj[key]); + if (promise && isPromise(promise)) defer(promise, key); + else results[key] = obj[key]; + } + return Promise.all(promises).then(function () { + return results; + }); + + function defer(promise, key) { + // predefine the key in the result + results[key] = undefined; + promises.push(promise.then(function (res) { + results[key] = res; + })); + } + } + + /** + * Check if `obj` is a promise. + * + * @param {Object} obj + * @return {Boolean} + * @api private + */ + + function isPromise(obj) { + return 'function' == typeof obj.then; + } + + /** + * Check if `obj` is a generator. + * + * @param {Mixed} obj + * @return {Boolean} + * @api private + */ + + function isGenerator(obj) { + return 'function' == typeof obj.next && 'function' == typeof obj.throw; + } + + /** + * Check if `obj` is a generator function. + * + * @param {Mixed} obj + * @return {Boolean} + * @api private + */ + function isGeneratorFunction(obj) { + var constructor = obj.constructor; + if (!constructor) return false; + if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true; + return isGenerator(constructor.prototype); + } + + /** + * Check for plain object. + * + * @param {Mixed} val + * @return {Boolean} + * @api private + */ + + function isObject(val) { + return Object == val.constructor; + } + + +/***/ }, +/* 22 */ +/***/ function(module, exports) { + + 'use strict'; + + + var Cache = module.exports = function Cache() { + this._cache = {}; + }; + + + Cache.prototype.put = function Cache_put(key, value) { + this._cache[key] = value; + }; + + + Cache.prototype.get = function Cache_get(key) { + return this._cache[key]; + }; + + + Cache.prototype.del = function Cache_del(key) { + delete this._cache[key]; + }; + + + Cache.prototype.clear = function Cache_clear() { + this._cache = {}; + }; + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var util = __webpack_require__(11); + + var DATE = /^\d\d\d\d-(\d\d)-(\d\d)$/; + var DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31]; + var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i; + var HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i; + var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i; + var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'"()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i; + // uri-template: https://tools.ietf.org/html/rfc6570 + var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#.\/;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?:\:[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?:\:[1-9][0-9]{0,3}|\*)?)*\})*$/i; + // For the source: https://gist.github.com/dperini/729294 + // For test cases: https://mathiasbynens.be/demo/url-regex + // @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. + // var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; + var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+\-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+\-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; + var UUID = /^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; + var JSON_POINTER = /^(?:\/(?:[^~\/]|~0|~1)*)*$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; + var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)*)*)$/; + + + module.exports = formats; + + function formats(mode) { + mode = mode == 'full' ? 'full' : 'fast'; + return util.copy(formats[mode]); + } + + + formats.fast = { + // date: http://tools.ietf.org/html/rfc3339#section-5.6 + date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, + // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 + time: /^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i, + 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i, + // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js + uri: /^(?:[a-z][a-z0-9+-.]*)(?:\:|\/)\/?[^\s]*$/i, + 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i, + 'uri-template': URITEMPLATE, + url: URL, + // email (sources from jsen validator): + // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 + // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') + email: /^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, + hostname: HOSTNAME, + // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + // uuid: http://tools.ietf.org/html/rfc4122 + uuid: UUID, + // JSON-pointer: https://tools.ietf.org/html/rfc6901 + // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A + 'json-pointer': JSON_POINTER, + // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 + 'relative-json-pointer': RELATIVE_JSON_POINTER + }; + + + formats.full = { + date: date, + time: time, + 'date-time': date_time, + uri: uri, + 'uri-reference': URIREF, + 'uri-template': URITEMPLATE, + url: URL, + email: /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, + hostname: hostname, + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + uuid: UUID, + 'json-pointer': JSON_POINTER, + 'relative-json-pointer': RELATIVE_JSON_POINTER + }; + + + function date(str) { + // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 + var matches = str.match(DATE); + if (!matches) return false; + + var month = +matches[1]; + var day = +matches[2]; + return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; + } + + + function time(str, full) { + var matches = str.match(TIME); + if (!matches) return false; + + var hour = matches[1]; + var minute = matches[2]; + var second = matches[3]; + var timeZone = matches[5]; + return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); + } + + + var DATE_TIME_SEPARATOR = /t|\s/i; + function date_time(str) { + // http://tools.ietf.org/html/rfc3339#section-5.6 + var dateTime = str.split(DATE_TIME_SEPARATOR); + return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); + } + + + function hostname(str) { + // https://tools.ietf.org/html/rfc1034#section-3.5 + // https://tools.ietf.org/html/rfc1123#section-2 + return str.length <= 255 && HOSTNAME.test(str); + } + + + var NOT_URI_FRAGMENT = /\/|\:/; + function uri(str) { + // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." + return NOT_URI_FRAGMENT.test(str) && URI.test(str); + } + + + var Z_ANCHOR = /[^\\]\\Z/; + function regex(str) { + if (Z_ANCHOR.test(str)) return false; + try { + new RegExp(str); + return true; + } catch(e) { + return false; + } + } + + +/***/ }, +/* 24 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var ruleModules = __webpack_require__(25) + , toHash = __webpack_require__(11).toHash; + + module.exports = function rules() { + var RULES = [ + { type: 'number', + rules: [ { 'maximum': ['exclusiveMaximum'] }, + { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] }, + { type: 'string', + rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, + { type: 'array', + rules: [ 'maxItems', 'minItems', 'uniqueItems', 'contains', 'items' ] }, + { type: 'object', + rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames', + { 'properties': ['additionalProperties', 'patternProperties'] } ] }, + { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } + ]; + + var ALL = [ 'type' ]; + var KEYWORDS = [ + 'additionalItems', '$schema', 'id', 'title', + 'description', 'default', 'definitions' + ]; + var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; + RULES.all = toHash(ALL); + RULES.types = toHash(TYPES); + + RULES.forEach(function (group) { + group.rules = group.rules.map(function (keyword) { + var implKeywords; + if (typeof keyword == 'object') { + var key = Object.keys(keyword)[0]; + implKeywords = keyword[key]; + keyword = key; + implKeywords.forEach(function (k) { + ALL.push(k); + RULES.all[k] = true; + }); + } + ALL.push(keyword); + var rule = RULES.all[keyword] = { + keyword: keyword, + code: ruleModules[keyword], + implements: implKeywords + }; + return rule; + }); + + if (group.type) RULES.types[group.type] = group; + }); + + RULES.keywords = toHash(ALL.concat(KEYWORDS)); + RULES.custom = {}; + + return RULES; + }; + + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + //all requires must be explicit because browserify won't work with dynamic requires + module.exports = { + '$ref': __webpack_require__(26), + allOf: __webpack_require__(27), + anyOf: __webpack_require__(28), + const: __webpack_require__(29), + contains: __webpack_require__(30), + dependencies: __webpack_require__(31), + 'enum': __webpack_require__(32), + format: __webpack_require__(33), + items: __webpack_require__(34), + maximum: __webpack_require__(35), + minimum: __webpack_require__(35), + maxItems: __webpack_require__(36), + minItems: __webpack_require__(36), + maxLength: __webpack_require__(37), + minLength: __webpack_require__(37), + maxProperties: __webpack_require__(38), + minProperties: __webpack_require__(38), + multipleOf: __webpack_require__(39), + not: __webpack_require__(40), + oneOf: __webpack_require__(41), + pattern: __webpack_require__(42), + properties: __webpack_require__(43), + propertyNames: __webpack_require__(44), + required: __webpack_require__(45), + uniqueItems: __webpack_require__(46), + validate: __webpack_require__(20) + }; + + +/***/ }, +/* 26 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_ref(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $async, $refCode; + if ($schema == '#' || $schema == '#/') { + if (it.isRoot) { + $async = it.async; + $refCode = 'validate'; + } else { + $async = it.root.schema.$async === true; + $refCode = 'root.refVal[0]'; + } + } else { + var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); + if ($refVal === undefined) { + var $message = it.MissingRefError.message(it.baseId, $schema); + if (it.opts.missingRefs == 'fail') { + console.error($message); + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; + } + if (it.opts.verbose) { + out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + if ($breakOnError) { + out += ' if (false) { '; + } + } else if (it.opts.missingRefs == 'ignore') { + console.warn($message); + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + throw new it.MissingRefError(it.baseId, $schema, $message); + } + } else if ($refVal.inline) { + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + $it.schema = $refVal.schema; + $it.schemaPath = ''; + $it.errSchemaPath = $schema; + var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); + out += ' ' + ($code) + ' '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + } + } else { + $async = $refVal.$async === true; + $refCode = $refVal.code; + } + } + if ($refCode) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + if (it.opts.passContext) { + out += ' ' + ($refCode) + '.call(this, '; + } else { + out += ' ' + ($refCode) + '( '; + } + out += ' ' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; + var __callValidate = out; + out = $$outStack.pop(); + if ($async) { + if (!it.async) throw new Error('async schema referenced by sync schema'); + if ($breakOnError) { + out += ' var ' + ($valid) + '; '; + } + out += ' try { ' + (it.yieldAwait) + ' ' + (__callValidate) + '; '; + if ($breakOnError) { + out += ' ' + ($valid) + ' = true; '; + } + out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; '; + if ($breakOnError) { + out += ' ' + ($valid) + ' = false; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + } + } else { + out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } + } + } + return out; + } + + +/***/ }, +/* 27 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_allOf(it, $keyword, $ruleType) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $allSchemasEmpty = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $allSchemasEmpty = false; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($breakOnError) { + if ($allSchemasEmpty) { + out += ' if (true) { '; + } else { + out += ' ' + ($closingBraces.slice(0, -1)) + ' '; + } + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 28 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_anyOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $noEmptySchema = $schema.every(function($sch) { + return it.util.schemaHasRules($sch, it.RULES.all); + }); + if ($noEmptySchema) { + var $currentBaseId = $it.baseId; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match some schema in anyOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + out = it.util.cleanUpCode(out); + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + +/***/ }, +/* 29 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_const(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to constant\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 30 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_contains(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId, + $nonEmptySchema = it.util.schemaHasRules($schema, it.RULES.all); + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if ($nonEmptySchema) { + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (' + ($nextValid) + ') break; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; + } else { + out += ' if (' + ($data) + '.length == 0) {'; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should contain a valid item\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + if ($nonEmptySchema) { + out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + } + if (it.opts.allErrors) { + out += ' } '; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 31 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_dependencies(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $schemaDeps = {}, + $propertyDeps = {}, + $ownProperties = it.opts.ownProperties; + for ($property in $schema) { + var $sch = $schema[$property]; + var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; + $deps[$property] = $sch; + } + out += 'var ' + ($errs) + ' = errors;'; + var $currentErrorPath = it.errorPath; + out += 'var missing' + ($lvl) + ';'; + for (var $property in $propertyDeps) { + $deps = $propertyDeps[$property]; + if ($deps.length) { + out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; + } + if ($breakOnError) { + out += ' && ( '; + var arr1 = $deps; + if (arr1) { + var $propertyKey, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $propertyKey = arr1[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty($propertyKey), + $useData = $data + $prop; + out += ' ( ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; + } + } + out += ')) { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } else { + out += ' ) { '; + var arr2 = $deps; + if (arr2) { + var $propertyKey, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $propertyKey = arr2[i2 += 1]; + var $prop = it.util.getProperty($propertyKey), + $missingProperty = it.util.escapeQuotes($propertyKey), + $useData = $data + $prop; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + } + it.errorPath = $currentErrorPath; + var $currentBaseId = $it.baseId; + for (var $property in $schemaDeps) { + var $sch = $schemaDeps[$property]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; + } + out += ') { '; + $it.schema = $sch; + $it.schemaPath = $schemaPath + it.util.getProperty($property); + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 32 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_enum(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $i = 'i' + $lvl, + $vSchema = 'schema' + $lvl; + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ';'; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to one of the allowed values\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 33 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_format(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + if (it.opts.format === false) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $unknownFormats = it.opts.unknownFormats, + $allowUnknown = Array.isArray($unknownFormats); + if ($isData) { + var $format = 'format' + $lvl, + $isObject = 'isObject' + $lvl, + $formatType = 'formatType' + $lvl; + out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; + if (it.async) { + out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; + } + out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' ('; + if ($unknownFormats != 'ignore') { + out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; + if ($allowUnknown) { + out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; + } + out += ') || '; + } + out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; + if (it.async) { + out += ' (async' + ($lvl) + ' ? ' + (it.yieldAwait) + ' ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; + } else { + out += ' ' + ($format) + '(' + ($data) + ') '; + } + out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; + } else { + var $format = it.formats[$schema]; + if (!$format) { + if ($unknownFormats == 'ignore') { + console.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } else { + throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); + } + } + var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; + var $formatType = $isObject && $format.type || 'string'; + if ($isObject) { + var $async = $format.async === true; + $format = $format.validate; + } + if ($formatType != $ruleType) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } + if ($async) { + if (!it.async) throw new Error('async format in sync schema'); + var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; + out += ' if (!(' + (it.yieldAwait) + ' ' + ($formatRef) + '(' + ($data) + '))) { '; + } else { + out += ' if (! '; + var $formatRef = 'formats' + it.util.getProperty($schema); + if ($isObject) $formatRef += '.validate'; + if (typeof $format == 'function') { + out += ' ' + ($formatRef) + '(' + ($data) + ') '; + } else { + out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; + } + out += ') { '; + } + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match format "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 34 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_items(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId; + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if (Array.isArray($schema)) { + var $additionalItems = it.schema.additionalItems; + if ($additionalItems === false) { + out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; + var $passData = $data + '[' + $i + ']'; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); + $it.dataPathArr[$dataNxt] = $i; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { + $it.schema = $additionalItems; + $it.schemaPath = it.schemaPath + '.additionalItems'; + $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } else if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' }'; + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 35 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limit(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $isMax = $keyword == 'maximum', + $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $notOp = $isMax ? '>' : '<', + $errorKeyword = undefined; + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $exclType = 'exclType' + $lvl, + $exclIsNumber = 'exclIsNumber' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclIsNumber = typeof $schemaExcl == 'number', + $opStr = $op; + if ($exclIsNumber && $isData) { + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; + } else { + if ($exclIsNumber && $schema === undefined) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $schemaValue = $schemaExcl; + $notOp += '='; + } else { + if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); + if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $notOp += '='; + } else { + $exclusive = false; + $opStr += '='; + } + } + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; + } + } + $errorKeyword = $errorKeyword || $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 36 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limitItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxItems' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxItems') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 37 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limitLength(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxLength' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + if (it.opts.unicode === false) { + out += ' ' + ($data) + '.length '; + } else { + out += ' ucs2length(' + ($data) + ') '; + } + out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be '; + if ($keyword == 'maxLength') { + out += 'longer'; + } else { + out += 'shorter'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' characters\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 38 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate__limitProperties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $op = $keyword == 'maxProperties' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxProperties') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 39 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_multipleOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + out += 'var division' + ($lvl) + ';if ('; + if ($isData) { + out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; + } + out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; + if (it.opts.multipleOfPrecision) { + out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; + } else { + out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; + } + out += ' ) '; + if ($isData) { + out += ' ) '; + } + out += ' ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be multiple of '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 40 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_not(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + var $allErrorsOption; + if ($it.opts.allErrors) { + $allErrorsOption = $it.opts.allErrors; + $it.opts.allErrors = false; + } + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (' + ($nextValid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + out += ' var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if ($breakOnError) { + out += ' if (false) { '; + } + } + return out; + } + + +/***/ }, +/* 41 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_oneOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false;'; + var $currentBaseId = $it.baseId; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } else { + out += ' var ' + ($nextValid) + ' = true; '; + } + if ($i) { + out += ' if (' + ($nextValid) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + out += ' if (' + ($nextValid) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match exactly one schema in oneOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; + if (it.opts.allErrors) { + out += ' } '; + } + return out; + } + + +/***/ }, +/* 42 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_pattern(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match pattern "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 43 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_properties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl; + var $schemaKeys = Object.keys($schema || {}), + $pProperties = it.schema.patternProperties || {}, + $pPropertyKeys = Object.keys($pProperties), + $aProperties = it.schema.additionalProperties, + $someProperties = $schemaKeys.length || $pPropertyKeys.length, + $noAdditional = $aProperties === false, + $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, + $removeAdditional = it.opts.removeAdditional, + $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + var $required = it.schema.required; + if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); + if (it.opts.patternGroups) { + var $pgProperties = it.schema.patternGroups || {}, + $pgPropertyKeys = Object.keys($pgProperties); + } + out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined;'; + } + if ($checkAdditional) { + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + if ($someProperties) { + out += ' var isAdditional' + ($lvl) + ' = !(false '; + if ($schemaKeys.length) { + if ($schemaKeys.length > 5) { + out += ' || validate.schema' + ($schemaPath) + '[' + ($key) + '] '; + } else { + var arr1 = $schemaKeys; + if (arr1) { + var $propertyKey, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $propertyKey = arr1[i1 += 1]; + out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; + } + } + } + } + if ($pPropertyKeys.length) { + var arr2 = $pPropertyKeys; + if (arr2) { + var $pProperty, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $pProperty = arr2[$i += 1]; + out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; + } + } + } + if (it.opts.patternGroups && $pgPropertyKeys.length) { + var arr3 = $pgPropertyKeys; + if (arr3) { + var $pgProperty, $i = -1, + l3 = arr3.length - 1; + while ($i < l3) { + $pgProperty = arr3[$i += 1]; + out += ' || ' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ') '; + } + } + } + out += ' ); if (isAdditional' + ($lvl) + ') { '; + } + if ($removeAdditional == 'all') { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + var $currentErrorPath = it.errorPath; + var $additionalProperty = '\' + ' + $key + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + } + if ($noAdditional) { + if ($removeAdditional) { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + out += ' ' + ($nextValid) + ' = false; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalProperties'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have additional properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' break; '; + } + } + } else if ($additionalIsSchema) { + if ($removeAdditional == 'failing') { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + } else { + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + } + } + it.errorPath = $currentErrorPath; + } + if ($someProperties) { + out += ' } '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + var $useDefaults = it.opts.useDefaults && !it.compositeRule; + if ($schemaKeys.length) { + var arr4 = $schemaKeys; + if (arr4) { + var $propertyKey, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $propertyKey = arr4[i4 += 1]; + var $sch = $schema[$propertyKey]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + var $prop = it.util.getProperty($propertyKey), + $passData = $data + $prop, + $hasDefault = $useDefaults && $sch.default !== undefined; + $it.schema = $sch; + $it.schemaPath = $schemaPath + $prop; + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); + $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); + $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + $code = it.util.varReplace($code, $nextData, $passData); + var $useData = $passData; + } else { + var $useData = $nextData; + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; + } + if ($hasDefault) { + out += ' ' + ($code) + ' '; + } else { + if ($requiredHash && $requiredHash[$propertyKey]) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = false; '; + var $currentErrorPath = it.errorPath, + $currErrSchemaPath = $errSchemaPath, + $missingProperty = it.util.escapeQuotes($propertyKey); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + $errSchemaPath = it.errSchemaPath + '/required'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + it.errorPath = $currentErrorPath; + out += ' } else { '; + } else { + if ($breakOnError) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = true; } else { '; + } else { + out += ' if (' + ($useData) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ' ) { '; + } + } + out += ' ' + ($code) + ' } '; + } + } + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($pPropertyKeys.length) { + var arr5 = $pPropertyKeys; + if (arr5) { + var $pProperty, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $pProperty = arr5[i5 += 1]; + var $sch = $pProperties[$pProperty]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); + $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else ' + ($nextValid) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + } + if (it.opts.patternGroups && $pgPropertyKeys.length) { + var arr6 = $pgPropertyKeys; + if (arr6) { + var $pgProperty, i6 = -1, + l6 = arr6.length - 1; + while (i6 < l6) { + $pgProperty = arr6[i6 += 1]; + var $pgSchema = $pgProperties[$pgProperty], + $sch = $pgSchema.schema; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; + $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; + out += ' var pgPropCount' + ($lvl) + ' = 0; '; + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' if (' + (it.usePattern($pgProperty)) + '.test(' + ($key) + ')) { pgPropCount' + ($lvl) + '++; '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else ' + ($nextValid) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + var $pgMin = $pgSchema.minimum, + $pgMax = $pgSchema.maximum; + if ($pgMin !== undefined || $pgMax !== undefined) { + out += ' var ' + ($valid) + ' = true; '; + var $currErrSchemaPath = $errSchemaPath; + if ($pgMin !== undefined) { + var $limit = $pgMin, + $reason = 'minimum', + $moreOrLess = 'less'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($pgMax !== undefined) { + out += ' else '; + } + } + if ($pgMax !== undefined) { + var $limit = $pgMax, + $reason = 'maximum', + $moreOrLess = 'more'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 44 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_propertyNames(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $i = 'i' + $lvl, + $invalidName = '\' + ' + $key + ' + \'', + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + out += ' var ' + ($errs) + ' = errors; '; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined; '; + } + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' var startErrs' + ($lvl) + ' = errors; '; + var $passData = $key; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '= it.opts.loopRequired, + $ownProperties = it.opts.ownProperties; + if ($breakOnError) { + out += ' var missing' + ($lvl) + '; '; + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + out += ' var ' + ($valid) + ' = true; '; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += '; if (!' + ($valid) + ') break; } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } else { + out += ' if ( '; + var arr2 = $required; + if (arr2) { + var $propertyKey, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $propertyKey = arr2[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty($propertyKey), + $useData = $data + $prop; + out += ' ( ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; + } + } + out += ') { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } + } else { + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + if ($isData) { + out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; + if ($isData) { + out += ' } '; + } + } else { + var arr3 = $required; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $prop = it.util.getProperty($propertyKey), + $missingProperty = it.util.escapeQuotes($propertyKey), + $useData = $data + $prop; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + } + it.errorPath = $currentErrorPath; + } else if ($breakOnError) { + out += ' if (true) {'; + } + return out; + } + + +/***/ }, +/* 46 */ +/***/ function(module, exports) { + + 'use strict'; + module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (($schema || $isData) && it.opts.uniqueItems !== false) { + if ($isData) { + out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; + } + out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + +/***/ }, +/* 47 */ +/***/ function(module, exports) { + + 'use strict'; + + var KEYWORDS = [ + 'multipleOf', + 'maximum', + 'exclusiveMaximum', + 'minimum', + 'exclusiveMinimum', + 'maxLength', + 'minLength', + 'pattern', + 'additionalItems', + 'maxItems', + 'minItems', + 'uniqueItems', + 'maxProperties', + 'minProperties', + 'required', + 'additionalProperties', + 'enum', + 'format', + 'const' + ]; + + module.exports = function (metaSchema, keywordsJsonPointers) { + for (var i=0; i [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\"[object Object]\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }, -/* 20 */ +/* 72 */ /***/ function(module, exports) { ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(acequire, exports, module) { @@ -36455,7 +36402,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 21 */ +/* 73 */ /***/ function(module, exports) { /* ***** BEGIN LICENSE BLOCK ***** diff --git a/dist/jsoneditor.map b/dist/jsoneditor.map index 52977e6..66dc905 100644 --- a/dist/jsoneditor.map +++ b/dist/jsoneditor.map @@ -1 +1 @@ -{"version":3,"sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","destroy","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","i","prop","isArray","reserved","require","global","f","e","t","n","r","s","o","u","a","code","l","1","setupAsync","opts","required","check","async","transpile","TRANSPILE","_transpileFunc","ASYNC","MODES","_opts","copy","checkGenerators","Function","checkAsyncFunction","getRegenerator","regenerator","runtime","regeneratorTranspile","getNodent","nodent","log","dontInstallRequireHook","nodentTranspile","promises","sourcemap","compileAsync","callback","_compileAsync","firstCall","deferCallback","setTimeout","self","missingSchema","schemaLoaded","sch","_refs","ref","_schemas","addSchema","missingRef","_callbacks","_loadingSchemas","loadSchema","schemaObj","_addSchema","setup","*","co*","es7","./compile/util","2","Cache","_cache","put","key","value","del","3","$ref","allOf","anyOf","dependencies","enum","format","items","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","properties","uniqueItems","../dotjs/_limit","../dotjs/_limitItems","../dotjs/_limitLength","../dotjs/_limitProperties","../dotjs/allOf","../dotjs/anyOf","../dotjs/dependencies","../dotjs/enum","../dotjs/format","../dotjs/items","../dotjs/multipleOf","../dotjs/not","../dotjs/oneOf","../dotjs/pattern","../dotjs/properties","../dotjs/ref","../dotjs/required","../dotjs/uniqueItems","../dotjs/validate","4","equal","b","arrA","Array","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","hasOwnProperty","5","formats","formatDefs","fName","compare","date","str","matches","match","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","split","DATE_TIME_SEPARATOR","hostname","HOSTNAME","test","uri","NOT_URI_FRAGMENT","URI","regex","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","res","undefined","UUID","JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","./util","6","loadBeautify","beautify","js_beautify","localRefs","baseId","callValidate","compilation","result","apply","errors","localCompile","_schema","_root","isRoot","$async","sourceCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","RULES","resolve","resolveRef","usePattern","useDefault","useCustomRule","vars","refVal","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","validateCode","co","ucs2length","ValidationError","refs","keepSourceCode","source","url","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","v","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","inline","regexStr","index","patternsHash","toQuotedString","valueStr","stableStringify","defaultsHash","rule","parentSchema","it","definition","message","errorsText","macro","keyword","checkCompiling","_compilations","compiling","_formats","cv","endCompiling","compIndex","splice","arr","statement","../async","./equal","./resolve","./validation_error","json-stable-stringify","7","SchemaObject","_compile","resolveSchema","refPath","_getFullPath","getFullPath","normalizeId","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","hash","slice","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","limit","checkNoRef","countKeys","item","count","Infinity","SIMPLE_INLINED","normalize","protocolSeparator","protocol","href","host","path","replace","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","escapeFragment","ids","toHash","./schema_obj","8","ruleModules","type","rules","ALL","KEYWORDS","TYPES","all","group","map","push","keywords","concat","types","custom","./_rules","9","obj","10","len","pos","charCodeAt","11","to","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","IDENTIFIER","escapeQuotes","SINGLE_QUOTE","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_TRUE_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","schemaHasRulesExcept","exceptKeyword","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","RELATIVE_JSON_POINTER","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","./ucs2length","12","validation","constructor","13","$keyword","$errorKeyword","$lvl","level","$dataLvl","dataLevel","$schema","$schemaPath","$errSchemaPath","$breakOnError","$valid","$schemaFormat","$isDataFormat","v5","$closingBraces","$schemaValueFormat","dataPathArr","$format","$compare","$schemaValue","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$result","$isData","$schemaValueExcl","$exclusive","$opExpr","$opStr","$$outStack","createErrors","messages","__err","pop","compositeRule","14","$notOp","15","16","unicode","17","18","$it","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","19","$errs","every","$wasComposite","20","21","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","statements","$code","passContext","$parentData","$parentDataProperty","def_callRuleValidate","modifying","valid","def_customError","22","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","join","arr2","$reqProperty","i2","l2","23","$vSchema","24","$unknownFormats","unknownFormats","$allowUnknown","$isObject","$formatRef","25","$idx","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$passData","26","multipleOfPrecision","27","$allErrorsOption","28","29","$regexp","30","$key","$matched","$ownProperties","ownProperties","$pProperty","i1","$missingPattern","31","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","$pgProperties","patternGroups","$pgPropertyKeys","$propertyKey","arr3","$pgProperty","l3","$additionalProperty","$useDefaults","useDefaults","arr4","i4","l4","$hasDefault","default","$useData","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","32","$refCode","$refVal","$message","missingRefs","$error","__callValidate","33","$propertySch","$loopRequired","i3","34","$shouldContinue","$ifPassed","$caseIndex","if","then","continue","35","36","$shouldUseRule","$top","rootId","$es7","yieldAwait","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$method","$dataType","$coerced","$bracesCoercion","$type","$refKeywords","extendRefs","$rulesGroup","$typeChecked","37","addKeyword","_addRule","ruleGroup","rg","metaSchema","getKeyword","removeKeyword","j","add","remove","./dotjs/custom","38","description","definitions","schemaArray","positiveInteger","positiveIntegerDefault0","simpleTypes","stringArray","title","exclusiveMinimum","exclusiveMaximum","39","formatMaximum","formatMinimum","formatExclusiveMaximum","formatExclusiveMinimum","constant","contains","switch","40","enableV5","_addKeyword","inlineFunc","inlineFunctions","_formatLimit","patternRequired","meta","addMetaSchema","META_SCHEMA_ID","containsMacro","enable","./dotjs/_formatLimit","./dotjs/constant","./dotjs/patternRequired","./dotjs/switch","./refs/json-schema-v5.json","41","gen","ctx","args","Promise","reject","onFulfilled","ret","next","onRejected","throw","done","toPromise","isPromise","TypeError","String","isGeneratorFunction","isGenerator","thunkToPromise","arrayToPromise","isObject","objectToPromise","fn","results","promise","displayName","val","wrap","createPromise","__generatorFunction__","42","cmp","space","cycles","replacer","node","aobj","bobj","seen","parent","indent","colonSeparator","toJSON","objectKeys","sort","keyValue","","x","has","jsonify","43","./lib/parse","./lib/stringify","44","at","ch","text","escapee","\"","\\","/","charAt","string","isFinite","hex","uffff","parseInt","fromCharCode","white","word","reviver","walk","holder","k","45","quote","escapable","lastIndex","partial","mind","gap","rep","\b","\t","\n","\f","\r","46","RangeError","mapDomain","regexSeparators","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","floor","damp","baseMinusTMin","tMax","skew","decode","input","basic","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","lastIndexOf","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toLowerCase","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","window","punycode","overflow","not-basic","invalid-input","Math","version","ucs2","47","qs","sep","eq","maxKeys","kstr","vstr","idx","substr","xs","48","stringifyPrimitive","ks","49","./decode","./encode","50","Url","slashes","auth","port","search","query","pathname","urlParse","parseQueryString","slashesDenoteHost","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","rest","trim","simplePath","exec","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","unshift","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","isAbsolute","51","arg","SCHEMA_URI_FORMAT_FUNC","SCHEMA_URI_FORMAT","schemaKeyRef","getSchema","_meta","_skipValidation","checkUnique","skipValidation","throwOrLogError","defaultMeta","currentUriFormat","keyRef","_getSchemaObj","_getSchemaFragment","compileSchema","_fragments","fragment","removeSchema","_removeAllSchemas","jsonStr","schemas","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","_validate","currentOpts","_metaOpts","separator","dataPath","addFormat","cache","indent_size","errorDataPath","metaOpts","META_IGNORE_OPTIONS","optsSchemas","customKeyword","./async","./cache","./compile","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/validation_error","./keyword","./refs/json-schema-draft-04.json","./v5","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","multiselection","nodes","errorNodes","focusTarget","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","_debouncedValidate","searchBox","modeSwitcher","debounce","bind","content","table","params","field","_setRoot","expand","appendChild","getNodeFromTarget","blur","getValue","updateField","focus","querySelector","menu","collapse","tbody","getDom","expandAll","collapseAll","_onAction","action","_onChange","setError","duplicateErrors","schemaErrors","improveSchemaError","findNode","filter","entry","reduce","findParents","child","updateDom","recurse","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","scrollTo","editor","animateTimeout","animateCallback","finalScrollTop","min","max","animate","diff","abs","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","oldSelection","newSelection","jsonlint","jsonString","sanitize","jsString","curr","prev","chars","pp","specialValues","regexp","escapeUnicodeChars","Number","Boolean","isUrlRegex","isUrl","getAbsoluteLeft","elem","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","removeClassName","stripFormatting","divElement","childNodes","iMax","style","removeAttribute","attributes","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","createTextNode","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","detachEvent","parsePath","jsonPath","remainder","SyntaxError","substring","enums","more","additionalProperty","insideRect","margin","_margin","right","func","wait","immediate","timeout","context","later","callNow","textDiff","oldText","newText","oldEnd","newEnd","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","defaultActions","parseError","lex","token","lexer","stack","vstack","lstack","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","matched","conditionStack","unput","less","pastInput","past","upcomingInput","pre","tempMatch","lines","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","searchFieldActive","searchValueActive","_clearDelay","forceSearch","resultCount","innerHTML","createMenuItems","list","domItems","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","childsHeight","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","naturalSort","appendNodeFactory","_updateEditability","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","checkbox","tdCheckbox","checked","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","spellcheck","fieldText","_escapeHTML","_updateSchema","_updateDomIndexes","_findSchema","_findEnum","composite","childSchema","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","open","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","auto","addTemplates","templates","appendData","insertData","template","titles","appendSubmenu","insertSubmenu","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","re","sre","dre","hre","insensitive","y","xN","yN","xD","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","buttonCompact","compact","emptyNode","isReadOnly","editorDom","edit","$blockScrolling","setTheme","setOptions","readOnly","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","on","resize","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","deps","payload","original","payloads","_acequire","parentId","lookup","dep","acequire","packagedModule","normalizeModule","moduleName","chunks","mod","packaged","ns","getNativeFlags","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","r2","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","reduceRight","sought","getPrototypeOf","__proto__","getOwnPropertyDescriptor","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","returnValue","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","ws","trimBeginRegexp","trimEndRegexp","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","cssText","importCssStylsheet","link","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","MODIFIER_KEYS","224","KEY_MODS","ctrl","alt","super","command","cmd","FUNCTION_KEYS","96","97","98","99","100","101","102","103","104","105","-13","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","getModifierState","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","onMousedown","clicks","isNewClick","startX","startY","timer","_clicks","eventNames","onDblclick","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","nextTick","win","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","resetSelection","isEmpty","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","forceIEMime","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","$undoManager","markUndoGroup","clearSelection","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","rect","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","getLineRange","getAccelKey","$lastScrollTime","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","_signal","$tooltipFollowsMouse","moveTooltip","gutterElement","tooltipTimeout","$gutterLayer","GutterTooltip","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","cancelDrag","draggable","setDragImage","clearData","getTextRange","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","reportError","msg","optionsProvider","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","moduleUrl","component","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","getCursorPosition","getWrapBehavioursEnabled","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","lineCommentStart","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","$mode","isWordBefore","isWordAfter","iterator","$matchTokenType","iterator2","bracket","packages","pack","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","consumePoint","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$brackets",")","(","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","$useSoftTabs","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","SPACE","TAB","TAB_SPACE","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","maxRow","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","addWordBoundary","needle","wordBoundary","Search","find","$matchIterator","skipCurrent","findAll","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","sbm","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceFunc","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","maxPixelHeight","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","Builder","MSBlobBuilder","bag","builder","endings","JsonHighlightRules","MatchingBraceOutdent","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","$syncOptions","noMatch","replaceAndFindNext"],"mappings":"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","file":"jsoneditor"} \ No newline at end of file +undefined \ No newline at end of file diff --git a/dist/jsoneditor.min.js b/dist/jsoneditor.min.js index 4726e78..66dc905 100644 --- a/dist/jsoneditor.min.js +++ b/dist/jsoneditor.min.js @@ -1,40 +1 @@ -/*! - * jsoneditor.js - * - * @brief - * JSONEditor is a web-based tool to view, edit, format, and validate JSON. - * It has various modes such as a tree editor, a code editor, and a plain text - * editor. - * - * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+ - * - * @license - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - * - * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org - * - * @author Jos de Jong, - * @version 5.7.0 - * @date 2017-05-26 - */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var r=a.getInternetExplorerVersion();if(-1!=r&&r<9)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var o=["ace","theme","ajv","schema","templates","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var r;try{r=i(1)}catch(e){}var o=i(2),s=i(13),a=i(5);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype.destroy=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=a.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,r=this.container,o=a.extend({},this.options),s=o.mode;o.mode=e;var l=n.modes[e];if(!l)throw new Error('Unknown mode "'+o.mode+'"');try{var c="text"==l.data;if(i=this.getName(),t=this[c?"getText":"get"](),this.destroy(),a.clear(this),a.extend(this,l.mixin),this.create(r,o),this.setName(i),this[c?"setText":"set"](t),"function"==typeof l.load)try{l.load.call(this)}catch(e){console.error(e)}if("function"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(e){console.error(e)}}catch(e){this._onError(e)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(e){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},n.prototype.validate=function(){},n.prototype.refresh=function(){},n.registerMode=function(e){var t,i;if(a.isArray(e))for(t=0;t=1&&i<=12&&n>=1&&n<=m[i]}function o(e,t){var i=e.match(g);if(!i)return!1;var n=i[1],r=i[2],o=i[3],s=i[5];return n<=23&&r<=59&&o<=59&&(!t||s)}function s(e){var t=e.split(E);return 2==t.length&&r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&v.test(e)}function l(e){return C.test(e)&&w.test(e)}function c(e){try{return new RegExp(e),!0}catch(e){return!1}}function h(e,t){if(e&&t)return e>t?1:et?1:e=0?{index:n,compiling:!0}:(n=this._compilations.length,this._compilations[n]={schema:e,root:t,baseId:i},{index:n,compiling:!1})}function s(e,t,i){var n=a.call(this,e,t,i);n>=0&&this._compilations.splice(n,1)}function a(e,t,i){for(var n=0;n=55296&&t<=56319&&r=t)throw new Error("Cannot access property/index "+n+" levels up, current level is "+t);return i[t-n]}if(n>t)throw new Error("Cannot access data "+n+" levels up, current level is "+t);if(o="data"+(t-n||""),!r)return o}for(var a=o,c=r.split("/"),h=0;h",F="result"+r,x=e.opts.v5&&s&&s.$data;if(x?(n+=" var schema"+r+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",w="schema"+r):w=s,C){var S=e.util.getData(E.$data,o,e.dataPathArr),$="exclusive"+r,D="op"+r,k="' + "+D+" + '";n+=" var schemaExcl"+r+" = "+S+"; ",S="schemaExcl"+r,n+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+d+" = false; ";var i=A,B=B||[];B.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(i||"_formatExclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(n+=" , message: '"+A+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;n=B.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+_+"]); ":n+=" validate.errors = ["+_+"]; return false; ":n+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(p+="}",n+=" else { "),x&&(n+=" if ("+w+" === undefined) "+d+" = true; else if (typeof "+w+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+F+" = "+v+"("+h+", ",n+=x?""+w:""+e.util.toQuotedString(s),n+=" ); if ("+F+" === undefined) "+d+" = false; var "+$+" = "+S+" === true; if ("+d+" === undefined) { "+d+" = "+$+" ? "+F+" "+b+" 0 : "+F+" "+b+"= 0; } if (!"+d+") var op"+r+" = "+$+" ? '"+b+"' : '"+b+"=';"}else{var $=!0===E,k=b;$||(k+="=");var D="'"+k+"'";x&&(n+=" if ("+w+" === undefined) "+d+" = true; else if (typeof "+w+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+F+" = "+v+"("+h+", ",n+=x?""+w:""+e.util.toQuotedString(s),n+=" ); if ("+F+" === undefined) "+d+" = false; if ("+d+" === undefined) "+d+" = "+F+" "+b,$||(n+="="),n+=" 0;"}n+=p+"if (!"+d+") { ";var i=t,B=B||[];B.push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(i||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+D+", limit: ",n+=x?""+w:""+e.util.toQuotedString(s),n+=" , exclusive: "+$+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be "+k+' "',n+=x?"' + "+w+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=x?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;return n=B.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+_+"]); ":n+=" validate.errors = ["+_+"]; return false; ":n+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="}"}},{}],14:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maximum"==t,p=f?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],g=e.opts.v5&&m&&m.$data,v=f?"<":">",w=f?">":"<";if(g){var y=e.util.getData(m.$data,s,e.dataPathArr),A="exclusive"+o,E="op"+o,C="' + "+E+" + '";r+=" var schemaExcl"+o+" = "+y+"; ",y="schemaExcl"+o,r+=" var exclusive"+o+"; if (typeof "+y+" != 'boolean' && typeof "+y+" != 'undefined') { ";var i=p,b=b||[];b.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(r+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var F=r;r=b.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+F+"]); ":r+=" validate.errors = ["+F+"]; return false; ":r+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else if( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" ((exclusive"+o+" = "+y+" === true) ? "+d+" "+w+"= "+n+" : "+d+" "+w+" "+n+") || "+d+" !== "+d+") { var op"+o+" = exclusive"+o+" ? '"+v+"' : '"+v+"=';"}else{var A=!0===m,C=v;A||(C+="=");var E="'"+C+"'";r+=" if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" "+d+" "+w,A&&(r+="="),r+=" "+n+" || "+d+" !== "+d+") {"}var i=t,b=b||[];b.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+E+", limit: "+n+", exclusive: "+A+" } ",!1!==e.opts.messages&&(r+=" , message: 'should be "+C+" ",r+=u?"' + "+n:a+"'"),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var F=r;return r=b.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+F+"]); ":r+=" validate.errors = ["+F+"]; return false; ":r+=" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",h&&(r+=" else { "),r}},{}],15:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maxItems"==t?">":"<";r+="if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" "+d+".length "+f+" "+n+") { ";var i=t,p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+n+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT have ",r+="maxItems"==t?"more":"less",r+=" than ",r+=u?"' + "+n+" + '":""+a,r+=" items' "),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var m=r;return r=p.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}},{}],16:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maxLength"==t?">":"<";r+="if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),!1===e.opts.unicode?r+=" "+d+".length ":r+=" ucs2length("+d+") ",r+=" "+f+" "+n+") { ";var i=t,p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+n+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT be ",r+="maxLength"==t?"longer":"shorter",r+=" than ",r+=u?"' + "+n+" + '":""+a,r+=" characters' "),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var m=r;return r=p.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}},{}],17:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,h=!e.opts.allErrors,d="data"+(s||""),u=e.opts.v5&&a&&a.$data;u?(r+=" var schema"+o+" = "+e.util.getData(a.$data,s,e.dataPathArr)+"; ",n="schema"+o):n=a;var f="maxProperties"==t?">":"<";r+="if ( ",u&&(r+=" ("+n+" !== undefined && typeof "+n+" != 'number') || "),r+=" Object.keys("+d+").length "+f+" "+n+") { ";var i=t,p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '"+(i||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+n+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT have ",r+="maxProperties"==t?"more":"less",r+=" than ",r+=u?"' + "+n+" + '":""+a,r+=" properties' "),e.opts.verbose&&(r+=" , schema: ",r+=u?"validate.schema"+l:""+a,r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),r+=" } "):r+=" {} ";var m=r;return r=p.pop(),!e.compositeRule&&h?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+="} ",h&&(r+=" else { "),r}},{}],18:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.schema[t],r=e.schemaPath+e.util.getProperty(t),o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,a=e.util.copy(e),l="";a.level++;var c="valid"+a.level,h=a.baseId,d=!0,u=n;if(u)for(var f,p=-1,m=u.length-1;p "+x+") { ";var $=c+"["+x+"]";u.schema=F,u.schemaPath=s+"["+x+"]",u.errSchemaPath=a+"/"+x,u.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),u.dataPathArr[g]=x;var D=e.validate(u);u.baseId=w,e.util.varOccurences(D,v)<2?i+=" "+e.util.varReplace(D,v,$)+" ":i+=" var "+v+" = "+$+"; "+D+" ",i+=" } ",l&&(i+=" if ("+p+") { ",f+="}")}if("object"==typeof y&&e.util.schemaHasRules(y,e.RULES.all)){u.schema=y,u.schemaPath=e.schemaPath+".additionalItems",u.errSchemaPath=e.errSchemaPath+"/additionalItems",i+=" "+p+" = true; if ("+c+".length > "+o.length+") { for (var "+m+" = "+o.length+"; "+m+" < "+c+".length; "+m+"++) { ",u.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var $=c+"["+m+"]";u.dataPathArr[g]=m;var D=e.validate(u);u.baseId=w,e.util.varOccurences(D,v)<2?i+=" "+e.util.varReplace(D,v,$)+" ":i+=" var "+v+" = "+$+"; "+D+" ",l&&(i+=" if (!"+p+") break; "),i+=" } } ",l&&(i+=" if ("+p+") { ",f+="}")}}else if(e.util.schemaHasRules(o,e.RULES.all)){u.schema=o,u.schemaPath=s,u.errSchemaPath=a,i+=" for (var "+m+" = 0; "+m+" < "+c+".length; "+m+"++) { ",u.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var $=c+"["+m+"]";u.dataPathArr[g]=m;var D=e.validate(u);u.baseId=w,e.util.varOccurences(D,v)<2?i+=" "+e.util.varReplace(D,v,$)+" ":i+=" var "+v+" = "+$+"; "+D+" ",l&&(i+=" if (!"+p+") break; "),i+=" } ",l&&(i+=" if ("+p+") { ",f+="}")}return l&&(i+=" "+f+" if ("+d+" == errors) {"),i=e.util.cleanUpCode(i)}},{}],26:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s&&s.$data;d?(n+=" var schema"+r+" = "+e.util.getData(s.$data,o,e.dataPathArr)+"; ",i="schema"+r):i=s,n+="var division"+r+";if (",d&&(n+=" "+i+" !== undefined && ( typeof "+i+" != 'number' || "),n+=" (division"+r+" = "+h+" / "+i+", ",e.opts.multipleOfPrecision?n+=" Math.abs(Math.round(division"+r+") - division"+r+") > 1e-"+e.opts.multipleOfPrecision+" ":n+=" division"+r+" !== parseInt(division"+r+") ",n+=" ) ",d&&(n+=" ) "),n+=" ) { ";var u=u||[];u.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { multipleOf: "+i+" } ",!1!==e.opts.messages&&(n+=" , message: 'should be multiple of ",n+=d?"' + "+i:s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var f=n;return n=u.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+f+"]); ":n+=" validate.errors = ["+f+"]; return false; ":n+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},{}],27:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.level,r=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,c="data"+(r||""),h="errs__"+n,d=e.util.copy(e);d.level++;var u="valid"+d.level;if(e.util.schemaHasRules(o,e.RULES.all)){d.schema=o,d.schemaPath=s,d.errSchemaPath=a,i+=" var "+h+" = errors; ";var f=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1;var p;d.opts.allErrors&&(p=d.opts.allErrors,d.opts.allErrors=!1),i+=" "+e.validate(d)+" ",d.createErrors=!0,p&&(d.opts.allErrors=p),e.compositeRule=d.compositeRule=f,i+=" if ("+u+") { ";var m=m||[];m.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var g=i;i=m.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(i+=" } ")}else i+=" var err = ",!1!==e.createErrors?(i+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be valid' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ",i+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l&&(i+=" if (false) { ");return i}},{}],28:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.level,r=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,c="data"+(r||""),h="valid"+n,d="errs__"+n,u=e.util.copy(e),f="";u.level++;var p="valid"+u.level;i+="var "+d+" = errors;var prevValid"+n+" = false;var "+h+" = false;";var m=u.baseId,g=e.compositeRule;e.compositeRule=u.compositeRule=!0;var v=o;if(v)for(var w,y=-1,A=v.length-1;y5)i+=" || validate.schema"+s+"["+m+"] ";else{var R=w;if(R)for(var T,P=-1,M=R.length-1;P= "+pe+"; ",a=e.errSchemaPath+"/patternGroups/minimum",i+=" if (!"+h+") { ";var q=q||[];q.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: { reason: '"+ve+"', limit: "+ge+", pattern: '"+e.util.escapeQuotes(H)+"' } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have "+we+" than "+ge+' properties matching pattern "'+e.util.escapeQuotes(H)+"\"' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var G=i;i=q.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+G+"]); ":i+=" validate.errors = ["+G+"]; return false; ":i+=" var err = "+G+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",void 0!==me&&(i+=" else ")}if(void 0!==me){var ge=me,ve="maximum",we="more";i+=" "+h+" = pgPropCount"+n+" <= "+me+"; ",a=e.errSchemaPath+"/patternGroups/maximum",i+=" if (!"+h+") { ";var q=q||[];q.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: { reason: '"+ve+"', limit: "+ge+", pattern: '"+e.util.escapeQuotes(H)+"' } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have "+we+" than "+ge+' properties matching pattern "'+e.util.escapeQuotes(H)+"\"' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var G=i;i=q.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+G+"]); ":i+=" validate.errors = ["+G+"]; return false; ":i+=" var err = "+G+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } "}a=K,l&&(i+=" if ("+h+") { ",f+="}")}}}}return l&&(i+=" "+f+" if ("+d+" == errors) {"),i=e.util.cleanUpCode(i)}},{}],32:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n,r=" ",o=e.level,s=e.dataLevel,a=e.schema[t],l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(s||""),d="valid"+o;if("#"==a||"#/"==a)e.isRoot?(i=e.async,n="validate"):(i=!0===e.root.schema.$async,n="root.refVal[0]");else{var u=e.resolveRef(e.baseId,a,e.isRoot);if(void 0===u){var f="can't resolve reference "+a+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(f);var p=p||[];p.push(r),r="",!1!==e.createErrors?(r+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(a)+"' } ",!1!==e.opts.messages&&(r+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(a)+"' "),e.opts.verbose&&(r+=" , schema: "+e.util.toQuotedString(a)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),r+=" } "):r+=" {} ";var m=r;r=p.pop(),!e.compositeRule&&c?e.async?r+=" throw new ValidationError(["+m+"]); ":r+=" validate.errors = ["+m+"]; return false; ":r+=" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(r+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var g=new Error(f);throw g.missingRef=e.resolve.url(e.baseId,a),g.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(g.missingRef)),g}console.log(f),c&&(r+=" if (true) { ")}}else if(u.inline){var v=e.util.copy(e);v.level++;var w="valid"+v.level;v.schema=u.schema,v.schemaPath="",v.errSchemaPath=a;var y=e.validate(v).replace(/validate\.schema/g,u.code);r+=" "+y+" ",c&&(r+=" if ("+w+") { ")}else i=!0===u.$async,n=u.code}if(n){var p=p||[];p.push(r),r="",e.opts.passContext?r+=" "+n+".call(this, ":r+=" "+n+"( ",r+=" "+h+", (dataPath || '')",'""'!=e.errorPath&&(r+=" + "+e.errorPath);r+=" , "+(s?"data"+(s-1||""):"parentData")+" , "+(s?e.dataPathArr[s]:"parentDataProperty")+", rootData) ";var A=r;if(r=p.pop(),i){if(!e.async)throw new Error("async schema referenced by sync schema");r+=" try { ",c&&(r+="var "+d+" ="),r+=" "+e.yieldAwait+" "+A+"; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ",c&&(r+=" if ("+d+") { ")}else r+=" if (!"+A+") { if (vErrors === null) vErrors = "+n+".errors; else vErrors = vErrors.concat("+n+".errors); errors = vErrors.length; } ",c&&(r+=" else { ")}return r}},{}],33:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.level,r=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),a=e.errSchemaPath+"/"+t,l=!e.opts.allErrors,c="data"+(r||""),h="valid"+n,d=e.opts.v5&&o&&o.$data;d&&(i+=" var schema"+n+" = "+e.util.getData(o.$data,r,e.dataPathArr)+"; ");var u="schema"+n;if(!d)if(o.length=e.opts.loopRequired;if(l)if(i+=" var missing"+n+"; ",A){d||(i+=" var "+u+" = validate.schema"+s+"; ");var E="i"+n,C="schema"+n+"["+E+"]",b="' + "+C+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,C,e.opts.jsonPointers)),i+=" var "+h+" = true; ",d&&(i+=" if (schema"+n+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+n+")) "+h+" = false; else {"),i+=" for (var "+E+" = 0; "+E+" < "+u+".length; "+E+"++) { "+h+" = "+c+"["+u+"["+E+"]] !== undefined; if (!"+h+") break; } ",d&&(i+=" } "),i+=" if (!"+h+") { ";var F=F||[];F.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(a)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(i+=" , message: '",e.opts._errorDataPathProperty?i+="is a required property":i+="should have required property \\'"+b+"\\'",i+="' "),e.opts.verbose&&(i+=" , schema: validate.schema"+s+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),i+=" } "):i+=" {} ";var x=i;i=F.pop(),!e.compositeRule&&l?e.async?i+=" throw new ValidationError(["+x+"]); ":i+=" validate.errors = ["+x+"]; return false; ":i+=" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else { "}else{i+=" if ( ";var S=f;if(S)for(var $,E=-1,D=S.length-1;E 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var f=f||[];f.push(n),n="",!1!==e.createErrors?(n+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=u?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var p=n;n=f.pop(),!e.compositeRule&&c?e.async?n+=" throw new ValidationError(["+p+"]); ":n+=" validate.errors = ["+p+"]; return false; ":n+=" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},{}],36:[function(e,t,i){"use strict";t.exports=function(e,t){function i(t){return void 0!==e.schema[t.keyword]||"properties"==t.keyword&&(!1===e.schema.additionalProperties||"object"==typeof e.schema.additionalProperties||e.schema.patternProperties&&Object.keys(e.schema.patternProperties).length||e.opts.v5&&e.schema.patternGroups&&Object.keys(e.schema.patternGroups).length)}var n="",r=!0===e.schema.$async;if(e.isTop){var o=e.isTop,s=e.level=0,a=e.dataLevel=0,l="data";if(e.rootId=e.resolve.fullPath(e.root.schema.id),e.baseId=e.baseId||e.rootId,r){e.async=!0;var c="es7"==e.opts.async;e.yieldAwait=c?"await":"yield"}delete e.isTop,e.dataPathArr=[void 0],n+=" var validate = ",r?c?n+=" (async function ":("co*"==e.opts.async&&(n+="co.wrap"),n+="(function* "):n+=" (function ",n+=" (data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; var vErrors = null; ",n+=" var errors = 0; ",n+=" if (rootData === undefined) rootData = data;"}else{var s=e.level,a=e.dataLevel,l="data"+(a||"");if(e.schema.id&&(e.baseId=e.resolve.url(e.baseId,e.schema.id)),r&&!e.async)throw new Error("async schema in sync schema");n+=" var errs_"+s+" = errors;"}var h="valid"+s,d=!e.opts.allErrors,u="",f="",p=e.schema.type,m=Array.isArray(p);if(p&&e.opts.coerceTypes){var g=e.util.coerceToTypes(e.opts.coerceTypes,p);if(g){var v=e.schemaPath+".type",w=e.errSchemaPath+"/type",y=m?"checkDataTypes":"checkDataType";n+=" if ("+e.util[y](p,l,!0)+") { ";var A="dataType"+s,E="coerced"+s;n+=" var "+A+" = typeof "+l+"; ","array"==e.opts.coerceTypes&&(n+=" if ("+A+" == 'object' && Array.isArray("+l+")) "+A+" = 'array'; "),n+=" var "+E+" = undefined; ";var C="",b=g;if(b)for(var F,x=-1,S=b.length-1;x2&&(t=u.call(arguments,1)),i(t)})})}function s(e){return Promise.all(e.map(r,this))}function a(e){for(var t=new e.constructor,i=Object.keys(e),n=[],o=0;o="0"&&r<="9";)t+=r,c();if("."===r)for(t+=".";c()&&r>="0"&&r<="9";)t+=r;if("e"===r||"E"===r)for(t+=r,c(),"-"!==r&&"+"!==r||(t+=r,c());r>="0"&&r<="9";)t+=r,c();if(e=+t,isFinite(e))return e;l("Bad number")},d=function(){var e,t,i,n="";if('"'===r)for(;c();){if('"'===r)return c(),n;if("\\"===r)if(c(),"u"===r){for(i=0,t=0;t<4&&(e=parseInt(c(),16),isFinite(e));t+=1)i=16*i+e;n+=String.fromCharCode(i)}else{if("string"!=typeof a[r])break;n+=a[r]}else n+=r}l("Bad string")},u=function(){for(;r&&r<=" ";)c()},f=function(){switch(r){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+r+"'")},p=function(){var e=[];if("["===r){if(c("["),u(),"]"===r)return c("]"),e;for(;r;){if(e.push(s()),u(),"]"===r)return c("]"),e;c(","),u()}}l("Bad array")},m=function(){var e,t={};if("{"===r){if(c("{"),u(),"}"===r)return c("}"),t;for(;r;){if(e=d(),u(),c(":"),Object.hasOwnProperty.call(t,e)&&l('Duplicate key "'+e+'"'),t[e]=s(),u(),"}"===r)return c("}"),t;c(","),u()}}l("Bad object")};s=function(){switch(u(),r){case"{":return m();case"[":return p();case'"':return d();case"-":return h();default:return r>="0"&&r<="9"?h():f()}},t.exports=function(e,t){var i;return o=e,n=0,r=" ",i=s(),u(),r&&l("Syntax error"),"function"==typeof t?function e(i,n){var r,o,s=i[n];if(s&&"object"==typeof s)for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(o=e(s,r),void 0!==o?s[r]=o:delete s[r]);return t.call(i,n,s)}({"":i},""):i}},{}],45:[function(e,t,i){function n(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var t=c[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function r(e,t){var i,l,c,h,d,u=o,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof a&&(f=a.call(t,e,f)),typeof f){case"string":return n(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(o+=s,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(h=f.length,i=0;i1&&(n=i[0]+"@",e=i[1]),e=e.replace(R,"."),n+s(e.split("."),t).join(".")}function l(e){for(var t,i,n=[],r=0,o=e.length;r=55296&&t<=56319&&r65535&&(e-=65536,t+=O(e>>>10&1023|55296),e=56320|1023&e),t+=O(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:b}function d(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function u(e,t,i){var n=0;for(e=i?M(e/$):e>>1,e+=M(e/t);e>P*x>>1;n+=b)e=M(e/P);return M(n+(P+1)*e/(e+S))}function f(e){var t,i,n,r,s,a,l,d,f,p,m=[],g=e.length,v=0,w=k,y=D;for(i=e.lastIndexOf(B),i<0&&(i=0),n=0;n=128&&o("not-basic"),m.push(e.charCodeAt(n));for(r=i>0?i+1:0;r=g&&o("invalid-input"),d=h(e.charCodeAt(r++)),(d>=b||d>M((C-v)/a))&&o("overflow"),v+=d*a,f=l<=y?F:l>=y+x?x:l-y,!(dM(C/p)&&o("overflow"),a*=p;t=m.length+1,y=u(v-s,t,0==s),M(v/t)>C-w&&o("overflow"),w+=M(v/t),v%=t,m.splice(v++,0,w)}return c(m)}function p(e){var t,i,n,r,s,a,c,h,f,p,m,g,v,w,y,A=[];for(e=l(e),g=e.length,t=k,i=0,s=D,a=0;a=t&&mM((C-i)/v)&&o("overflow"),i+=(c-t)*v,t=c,a=0;aC&&o("overflow"),m==t){for(h=i,f=b;p=f<=s?F:f>=s+x?x:f-s,!(h= 0x80 (not a basic code point)","invalid-input":"Invalid input"},P=b-F,M=Math.floor,O=String.fromCharCode;if(A={version:"1.4.1",ucs2:{decode:l,encode:c},decode:f,encode:p,toASCII:g,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return A});else if(v&&w)if(n.exports==v)w.exports=A;else for(E in A)A.hasOwnProperty(E)&&(v[E]=A[E]);else i.punycode=A}(this)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],47:[function(e,t,i){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,i,o){t=t||"&",i=i||"=";var s={};if("string"!=typeof e||0===e.length)return s;e=e.split(t);var a=1e3;o&&"number"==typeof o.maxKeys&&(a=o.maxKeys);var l=e.length;a>0&&l>a&&(l=a);for(var c=0;c=0?(h=p.substr(0,m),d=p.substr(m+1)):(h=p,d=""),u=decodeURIComponent(h),f=decodeURIComponent(d),n(s,u)?r(s[u])?s[u].push(f):s[u]=[s[u],f]:s[u]=f}return s};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],48:[function(e,t,i){"use strict";function n(e,t){if(e.map)return e.map(t);for(var i=[],n=0;n",'"',"`"," ","\r","\n","\t"],p=["{","}","|","\\","^","`"].concat(f),m=["'"].concat(p),g=["%","/","?",";","#"].concat(m),v=["/","?","#"],w={javascript:!0,"javascript:":!0},y={javascript:!0,"javascript:":!0},A={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},E=e("querystring");n.prototype.parse=function(e,t,i){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),r=-1!==n&&n127?_+="x":_+=B[L];if(!_.match(/^[+a-z0-9A-Z_-]{0,63}$/)){var T=D.slice(0,b),P=D.slice(b+1),M=B.match(/^([+a-z0-9A-Z_-]{0,63})(.*)$/);M&&(T.push(M[1]),P.unshift(M[2])),P.length&&(s="/"+P.join(".")+s),this.hostname=T.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),$||(this.hostname=l.toASCII(this.hostname));var O=this.port?":"+this.port:"",j=this.hostname||"";this.host=j+O,this.href+=this.host,$&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!w[f])for(var b=0,k=m.length;b0)&&i.host.split("@");x&&(i.auth=x.shift(),i.host=i.hostname=x.shift())}return i.search=e.search,i.query=e.query,c.isNull(i.pathname)&&c.isNull(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!b.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var S=b.slice(-1)[0],$=(i.host||e.host||b.length>1)&&("."===S||".."===S)||""===S,D=0,k=b.length;k>=0;k--)S=b[k],"."===S?b.splice(k,1):".."===S?(b.splice(k,1),D++):D&&(b.splice(k,1),D--);if(!E&&!C)for(;D--;D)b.unshift("..");!E||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),$&&"/"!==b.join("/").substr(-1)&&b.push("");var B=""===b[0]||b[0]&&"/"===b[0].charAt(0);if(F){i.hostname=i.host=B?"":b.length?b.shift():"";var x=!!(i.host&&i.host.indexOf("@")>0)&&i.host.split("@");x&&(i.auth=x.shift(),i.host=i.hostname=x.shift())}return E=E||i.host&&b.length,E&&!B&&b.unshift(""),b.length?i.pathname=b.join("/"):(i.pathname=null,i.path=null),c.isNull(i.pathname)&&c.isNull(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=e.auth||i.auth,i.slashes=i.slashes||e.slashes,i.href=i.format(),i},n.prototype.parseHost=function(){var e=this.host,t=d.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":51,punycode:46,querystring:49}],51:[function(e,t,i){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],ajv:[function(e,t,i){"use strict";function n(e){return w.test(e)}function r(t){function i(e,t){var i;if("string"==typeof e){if(!(i=F(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var n=k(e);i=n.validate||B(n)}var r=i(t);return!0===i.$async?"*"==T._opts.async?m(r):r:(T.errors=i.errors,r)}function g(e,t){var i=k(e,void 0,t);return i.validate||B(i)}function A(e,t,i,n){if(Array.isArray(e))for(var r=0;r0?this.autoScrollStep=(n+24-e)/3:e>o-24&&r+i.scrollTop3?(i.scrollTop+=r/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},h._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.type="button",i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.type="button",n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var r=document.createElement("button");r.type="button",r.className="jsoneditor-undo jsoneditor-separator",r.title="Undo last action (Ctrl+Z)",r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement("button");s.type="button",s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=this;this.modeSwitcher=new l(this.menu,this.options.modes,this.options.mode,function(e){a.modeSwitcher.destroy(),a.setMode(e),a.modeSwitcher.focus()})}this.options.search&&(this.searchBox=new o(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(this.focusTarget=e.target),"mousedown"==e.type&&this._startDragDistance(e),"mousemove"!=e.type&&"mouseup"!=e.type&&"click"!=e.type||this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value&&e.target!=t.dom.select)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getNodePath(),n=t.getNodePath(),r=0;r=0},n.prototype.canRedo=function(){return this.index=0;){var t=r[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&"\t"!==t)return t;e--}return""}())?function(){for(var e=["null","true","false"],i="",n=t(),s=/[a-zA-Z_$\d]/;s.test(n);)i+=n,o++,n=t();-1===e.indexOf(i)?r.push('"'+i+'"'):r.push(i)}():(r.push(a),o++)}return r.join("")},t.escapeUnicodeChars=function(e){return e.replace(/[\u007F-\uFFFF]/g,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})},t.validate=function(e){void 0!==n?n.parse(e):JSON.parse(e)},t.extend=function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},t.clear=function(e){for(var t in e)e.hasOwnProperty(t)&&delete e[t];return e},t.type=function(e){return null===e?"null":void 0===e?"undefined":e instanceof Number||"number"==typeof e?"number":e instanceof String||"string"==typeof e?"string":e instanceof Boolean||"boolean"==typeof e?"boolean":e instanceof RegExp||"regexp"==typeof e?"regexp":t.isArray(e)?"array":"object"};var r=/^https?:\/\/\S+$/;t.isUrl=function(e){return("string"==typeof e||e instanceof String)&&r.test(e)},t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.getAbsoluteLeft=function(e){return e.getBoundingClientRect().left+window.pageXOffset||document.scrollLeft||0},t.getAbsoluteTop=function(e){return e.getBoundingClientRect().top+window.pageYOffset||document.scrollTop||0},t.addClassName=function(e,t){var i=e.className.split(" ");-1==i.indexOf(t)&&(i.push(t),e.className=i.join(" "))},t.removeClassName=function(e,t){var i=e.className.split(" "),n=i.indexOf(t);-1!=n&&(i.splice(n,1),e.className=i.join(" "))},t.stripFormatting=function(e){for(var i=e.childNodes,n=0,r=i.length;n=0;a--){var l=s[a];!0===l.specified&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){if(window.getSelection()){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,i){if(void 0==i&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var n=e.childNodes,r="",o=0,s=n.length;o5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return"additionalProperties"===e.keyword&&(e.message="should NOT have additional property: "+e.params.additionalProperty),e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var r=this,o=arguments,s=function(){n=null,i||e.apply(r,o)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var i=t.length,n=0,r=e.length,o=t.length;t.charAt(n)===e.charAt(n)&&nn&&r>0;)o--,r--;return{start:n,end:o}}},function(e,t,i){var n=function(){var e={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(e,t,i,n,r,o,s){var a=o.length-1;switch(r){case 1:this.$=e.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(e);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=o[a-1];case 13:this.$={};break;case 14:this.$=o[a-1];break;case 15:this.$=[o[a-2],o[a]];break;case 16:this.$={},this.$[o[a][0]]=o[a][1];break;case 17:this.$=o[a-2],o[a-2][o[a][0]]=o[a][1];break;case 18:this.$=[];break;case 19:this.$=o[a-1];break;case 20:this.$=[o[a]];break;case 21:this.$=o[a-2],o[a-2].push(o[a])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(e,t){throw new Error(e)},parse:function(e){function t(){var e;return e=i.lexer.lex()||1,"number"!=typeof e&&(e=i.symbols_[e]||e),e}var i=this,n=[0],r=[null],o=[],s=this.table,a="",l=0,c=0,h=0,d=2;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;o.push(u),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var f,p,m,g,v,w,y,A,E,C={};;){if(m=n[n.length-1],this.defaultActions[m]?g=this.defaultActions[m]:(null==f&&(f=t()),g=s[m]&&s[m][f]),void 0===g||!g.length||!g[0]){if(!h){E=[];for(w in s[m])this.terminals_[w]&&w>2&&E.push("'"+this.terminals_[w]+"'");var b="";b=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+this.terminals_[f]+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(b,{text:this.lexer.match,token:this.terminals_[f]||f,line:this.lexer.yylineno,loc:u,expected:E})}if(3==h){if(1==f)throw new Error(b||"Parsing halted.");c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,f=t()}for(;;){if(d.toString()in s[m])break;if(0==m)throw new Error(b||"Parsing halted.");!function(e){n.length=n.length-2*e,r.length=r.length-e,o.length=o.length-e}(1),m=n[n.length-1]}p=f,f=d,m=n[n.length-1],g=s[m]&&s[m][d],h=3}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+f);switch(g[0]){case 1:n.push(f),r.push(this.lexer.yytext),o.push(this.lexer.yylloc),n.push(g[1]),f=null,p?(f=p,p=null):(c=this.lexer.yyleng,a=this.lexer.yytext,l=this.lexer.yylineno,u=this.lexer.yylloc,h>0&&h--);break;case 2:if(y=this.productions_[g[1]][1],C.$=r[r.length-y],C._$={first_line:o[o.length-(y||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(y||1)].first_column,last_column:o[o.length-1].last_column},void 0!==(v=this.performAction.call(C,a,c,l,this.yy,g[1],r,o)))return v;y&&(n=n.slice(0,-1*y*2),r=r.slice(0,-1*y),o=o.slice(0,-1*y)),n.push(this.productions_[g[1]][0]),r.push(C.$),o.push(C._$),A=s[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e||void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t){"use strict";function i(e,t){var i=this;this.editor=e,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=t;var n=document.createElement("table");this.dom.table=n,n.className="jsoneditor-search",t.appendChild(n);var r=document.createElement("tbody");this.dom.tbody=r,n.appendChild(r);var o=document.createElement("tr");r.appendChild(o);var s=document.createElement("td");o.appendChild(s);var a=document.createElement("div");this.dom.results=a,a.className="jsoneditor-results",s.appendChild(a),s=document.createElement("td"),o.appendChild(s);var l=document.createElement("div");this.dom.input=l,l.className="jsoneditor-frame",l.title="Search fields and values",s.appendChild(l);var c=document.createElement("table");l.appendChild(c);var h=document.createElement("tbody");c.appendChild(h),o=document.createElement("tr"),h.appendChild(o);var d=document.createElement("button");d.type="button",d.className="jsoneditor-refresh",s=document.createElement("td"),s.appendChild(d),o.appendChild(s);var u=document.createElement("input");this.dom.search=u,u.oninput=function(e){i._onDelayedSearch(e)},u.onchange=function(e){i._onSearch()},u.onkeydown=function(e){i._onKeyDown(e)},u.onkeyup=function(e){i._onKeyUp(e)},d.onclick=function(e){u.select()},s=document.createElement("td"),s.appendChild(u),o.appendChild(s);var f=document.createElement("button");f.type="button",f.title="Next result (Enter)",f.className="jsoneditor-next",f.onclick=function(){i.next()},s=document.createElement("td"),s.appendChild(f),o.appendChild(s);var p=document.createElement("button");p.type="button",p.title="Previous result (Shift+Enter)",p.className="jsoneditor-previous",p.onclick=function(){i.previous()},s=document.createElement("td"),s.appendChild(p),o.appendChild(s)}i.prototype.next=function(e){if(void 0!=this.results){var t=void 0!=this.resultIndex?this.resultIndex+1:0;t>this.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;i<0&&(i=t),this._setActiveResult(i,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node;"field"==this.activeResult.elem?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var n=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?n.searchFieldActive=!0:n.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],n.updateDom(),n.scrollTo(function(){t&&n.focus(r)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},i.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},e.exports=i},function(e,t,i){"use strict";function n(e,t){function i(e,t,r){r.forEach(function(r){if("separator"==r.type){var o=document.createElement("div");o.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(o),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.type="button",l.className=r.className,s.button=l,r.title&&(l.title=r.title),r.click&&(l.onclick=function(e){e.preventDefault(),n.hide(),r.click()}),a.appendChild(l),r.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(r.text));var h;if(r.click){l.className+=" jsoneditor-default";var d=document.createElement("button");d.type="button",s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),r.submenuTitle&&(d.title=r.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),h=l}h.onclick=function(e){e.preventDefault(),n._onExpandItem(s),h.focus()};var f=[];s.subItems=f;var p=document.createElement("ul");s.ul=p,p.className="jsoneditor-menu",p.style.height="0",a.appendChild(p),i(p,f,r.submenu)}else l.innerHTML='
'+r.text;t.push(s)}})}this.dom={};var n=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",r.root=o;var s=document.createElement("div");s.className="jsoneditor-contextmenu",r.menu=s,o.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),r.list=a,r.items=[];var l=document.createElement("button");l.type="button",r.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var r=i(5);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var o=e.getBoundingClientRect(),s=t.getBoundingClientRect();o.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,h=this.dom.list;this.eventListeners.mousedown=r.addEventListener(window,"mousedown",function(e){var t=e.target;t==h||c._isChildOf(t,h)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=r.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=r.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&r.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",r.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var o=e.ul;o.style.display="block";o.clientHeight;setTimeout(function(){if(t.expandedItem==e){for(var i=0,n=0;n0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var r=document.createElement("button");for(r.type="button",r.className="jsoneditor-schema-error",r.appendChild(n),r.onmouseover=r.onfocus=function(){for(var e=["right","above","below","left"],t=0;t0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(o))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");i.type="button",e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),r=document.createElement("button");r.type="button",e.menu=r,r.className="jsoneditor-contextmenu",r.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var o=document.createElement("td");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],r=e[e.length-1],o=n.getNodeFromTarget(t.target),s=r._nextSibling(),l=i.editor,c=a.getAbsoluteTop(o.dom.tr)-a.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=a.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=a.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:s,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,r,o,s,c,h,d,u,f,p,m,g,v,w,y=e[0].editor,A=t.pageY-y.drag.offsetY,E=t.pageX,C=!1,b=e[0];if(i=b.dom.tr,f=a.getAbsoluteTop(i),g=i.offsetHeight,Ap+g&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),C=!0)}else{var F=e[e.length-1];if(c=F.expanded&&F.append?F.append.getDom():F.dom.tr,s=c?c.nextSibling:void 0){m=a.getAbsoluteTop(s),o=s;do{u=n.getNodeFromTarget(o),o&&(v=o.nextSibling?a.getAbsoluteTop(o.nextSibling):0,w=o?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==F&&(f+=27)),o=o.nextSibling}while(o&&A>f+w);if(u&&u.parent){var x=E-y.drag.mouseX,S=Math.round(x/24/2),$=y.drag.level+S,D=u.getLevel();for(r=u.dom.tr.previousSibling;D<$&&r;){d=n.getNodeFromTarget(r);if(e.some(function(e){return e===d||d._isChildOf(e)}));else{if(!(d instanceof l))break;var k=d.parent.childs;if(k.length==e.length&&k[e.length-1]==F)break;u=n.getNodeFromTarget(r),D=u.getLevel()}r=r.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),C=!0)}}}C&&(y.drag.mouseX=E,y.drag.level=b.getLevel()),y.startAutoScroll(A),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],r=i.editor,o=i.parent,s=o.childs.indexOf(i),l=o.childs[s+e.length]||o.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction("moveNodes",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(a.removeEventListener(window,"mousemove",r.mousemove),delete r.mousemove),r.mouseup&&(a.removeEventListener(window,"mouseup",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-highlight"):a.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?a.addClassName(this.dom.tr,"jsoneditor-selected"):a.removeClassName(this.dom.tr,"jsoneditor-selected"),t?a.addClassName(this.dom.tr,"jsoneditor-first"):a.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="jsoneditor-field"):i.className="jsoneditor-readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n),this._updateSchema()}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;"array"==this.type?(r.innerHTML="["+o+"]",a.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(r.innerHTML="{"+o+"}",a.addClassName(this.dom.tr,"jsoneditor-expandable")):(r.innerHTML=this._escapeHTML(this.value),a.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&!0===e.updateIndexes&&this._updateDomIndexes(),e&&!0===e.recurse&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateSchema=function(){this.editor&&this.editor.options&&(this.schema=n._findSchema(this.editor.options.schema,this.getPath()),this.schema?this.enum=n._findEnum(this.schema):delete this.enum)},n._findEnum=function(e){if(e.enum)return e.enum;var t=e.oneOf||e.anyOf||e.allOf;if(t){var i=t.filter(function(e){return e.enum});if(i.length>0)return i[0].enum}return null},n._findSchema=function(e,t){for(var i=e,n=0;n0?this.editor.multiselection.nodes:[this],A=y[0],E=y[y.length-1];if(13==u){if(f==this.dom.value)this.editable.value&&!e.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(f==this.dom.expand){var C=this._hasChilds();if(C){var b=e.ctrlKey;this._onExpand(b),f.focus(),v=!0}}}else if(68==u)p&&w&&(n.onDuplicate(y),v=!0);else if(69==u)p&&(this._onExpand(m),f.focus(),v=!0);else if(77==u&&w)p&&(this.showContextMenu(f),v=!0);else if(46==u&&w)p&&(n.onRemove(y),v=!0);else if(45==u&&w)p&&!m?(this._onInsertBefore(),v=!0):p&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var F=this._lastNode();F&&F.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(36==u){if(g){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&w){if(E.expanded){var $=E.getAppend();r=$?$.nextSibling:void 0}else{var D=E.getDom();r=D.nextSibling}r&&(i=n.getNodeFromTarget(r),o=r.nextSibling,_=n.getNodeFromTarget(o), -i&&i instanceof l&&1!=E.parent.childs.length&&_&&_.parent&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(f))),v=!0):!g&&p&&m&&w?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):g&&m&&w&&(t=A._previousNode(),t&&t.parent&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var k=this._nextElement(f);k&&this.focus(this._getElementName(k)),v=!0}else if(g&&m&&w){D=A.getDom();var B=D.previousSibling;B&&(t=n.getNodeFromTarget(B))&&t.parent&&t instanceof l&&!t.isVisible()&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:t,oldSelection:s,newSelection:this.editor.getSelection()}))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(f))),v=!0;else if(!g&&p&&m&&w)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(g&&m&&w){i=E.expanded?E.append?E.append._nextNode():void 0:E._nextNode();var _=i&&(i._nextNode()||i.parent.append);_&&_.parent&&(s=this.editor.getSelection(),c=E._nextSibling(),y.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:y,oldBeforeNode:c,newBeforeNode:_,oldSelection:s,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();n.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:o,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:o,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onAppend=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype.sort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,o=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return t*r(e[i],n[i])}),this.sortOrder=1==t?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:o,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},n.prototype.getAppend=function(){return this.append||(this.append=new l(this.editor),this.append.setParent(this)),this.append.getDom()},n.getNodeFromTarget=function(e){for(;e;){if(e.node)return e.node;e=e.parentNode}},n.blurNodes=function(e){if(!Array.isArray(e))return void n.blurNodes([e]);var t=e[0],i=t.parent,r=t.getIndex();i.childs[r+e.length]?i.childs[r+e.length].focus():i.childs[r-1]?i.childs[r-1].focus():i.focus()},n.prototype._nextSibling=function(){var e=this.parent.childs.indexOf(this);return this.parent.childs[e+1]||this.parent.append},n.prototype._previousNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.previousSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._nextNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t;do{i=i.nextSibling,e=n.getNodeFromTarget(i)}while(i&&e instanceof l&&!e.isVisible())}return e},n.prototype._firstNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.firstChild;e=n.getNodeFromTarget(i)}return e},n.prototype._lastNode=function(){var e=null,t=this.getDom();if(t&&t.parentNode){var i=t.parentNode.lastChild;for(e=n.getNodeFromTarget(i);i&&e instanceof l&&!e.isVisible();)i=i.previousSibling,e=n.getNodeFromTarget(i)}return e},n.prototype._previousElement=function(e){var t=this.dom;switch(e){case t.value:if(this.fieldEditable)return t.field;case t.field:if(this._hasChilds())return t.expand;case t.expand:return t.menu;case t.menu:if(t.drag)return t.drag;default:return null}},n.prototype._nextElement=function(e){var t=this.dom;switch(e){case t.drag:return t.menu;case t.menu:if(this._hasChilds())return t.expand;case t.expand:if(this.fieldEditable)return t.field;case t.field:if(!this._hasChilds())return t.value;default:return null}},n.prototype._getElementName=function(e){var t=this.dom;for(var i in t)if(t.hasOwnProperty(i)&&t[i]==e)return i;return null},n.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},n.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},n.prototype.addTemplates=function(e,t){var i=this,n=i.editor.options.templates;if(null!=n){n.length&&e.push({type:"separator"});var r=function(e,t){i._onAppend(e,t)},o=function(e,t){i._onInsertBefore(e,t)};n.forEach(function(i){e.push({text:i.text,className:i.className||"jsoneditor-type-object",title:i.title,click:t?r.bind(this,i.field,i.value):o.bind(this,i.field,i.value)})})}},n.prototype.showContextMenu=function(e,t){var i=this,r=n.TYPE_TITLES,s=[];if(this.editable.value&&s.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:r.auto,click:function(){i._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:r.array,click:function(){i._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:r.object,click:function(){i._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:r.string,click:function(){i._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";s.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){i.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){i.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){i.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){s.length&&s.push({type:"separator"});var l=i.parent.childs;if(i==l[l.length-1]){var c=[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onAppend("","","string")}}];i.addTemplates(c,!0),s.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){i._onAppend("","","auto")},submenu:c})}var h=[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){i._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){i._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){i._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){i._onInsertBefore("","","string")}}];i.addTemplates(h,!1),s.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){i._onInsertBefore("","","auto")},submenu:h}),this.editable.field&&(s.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){n.onDuplicate(i)}}),s.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){n.onRemove(i)}}))}new o(s,{close:t}).show(e,this.editor.content)},n.prototype._getType=function(e){return e instanceof Array?"array":e instanceof Object?"object":"string"==typeof e&&"string"!=typeof this._stringCast(e)?"string":"auto"},n.prototype._stringCast=function(e){var t=e.toLowerCase(),i=Number(e),n=parseFloat(e);return""==e?"":"null"==t?null:"true"==t||"false"!=t&&(isNaN(i)||isNaN(n)?e:i)},n.prototype._escapeHTML=function(e){if("string"!=typeof e)return String(e);var t=String(e).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return!0===this.editor.options.escapeUnicode&&(n=a.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"';return a.parse(t).replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;im)return 1}for(var g=0,v=Math.max(u.length,f.length);gr)return 1}return 0}},function(e,t,i){"use strict";function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,"tree"===this.editor.options.mode){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.type="button",n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var r=document.createElement("td"),o=document.createElement("div");return o.innerHTML="(empty)",o.className="jsoneditor-readonly",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,r=e.TYPE_TITLES,s=[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){n._onAppend("","","string")}}];n.addTemplates(s,!0),new o([{text:"Append!",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:s}],{close:i}).show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom;if(i==n.menu&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var o=this.editor.highlighter;o.highlight(this.parent),o.lock(),r.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){r.removeClassName(n.menu,"jsoneditor-selected"),o.unlock(),o.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var r=i(5),o=i(8);e.exports=n},function(e,t,i){"use strict";function n(e,t,i,n){for(var o={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},s=[],a=0;a0){if(i.length>3){i=i.slice(0,3);var n=this.validateSchema.errors.length-3;i.push("("+n+" more errors...)")}var r=document.createElement("div");r.innerHTML=''+i.map(function(e){return''+("string"==typeof e?'":"")+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=r,this.frame.appendChild(r);var s=r.clientHeight;this.content.style.marginBottom=-s+"px",this.content.style.paddingBottom=s+"px"}if(this.aceEditor){this.aceEditor.resize(!1)}},e.exports=[{mode:"text",mixin:s,data:"text",load:s.format},{mode:"code",mixin:s,data:"text",load:s.format}]},function(e,t,i){var n;if(window.ace)n=window.ace;else try{n=i(15),i(18),i(20)}catch(e){}e.exports=n},function(e,t,i){!function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,i,n){if("string"!=typeof e)return void(t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace()));2==arguments.length&&(n=i),t.modules[e]||(t.payloads[e]=n,t.modules[e]=null)};t.modules={},t.payloads={};var i=function(e,t,i){if("string"==typeof t){var r=o(e,t);if(void 0!=r)return i&&i(),r}else if("[object Array]"===Object.prototype.toString.call(t)){for(var s=[],a=0,l=t.length;a1&&r(l,"")>-1&&(i=RegExp(this.source,o.replace.call(n(this),"g","")),o.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(e){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=p.call(arguments,1),r=function(){if(this instanceof r){var n=t.apply(this,i.concat(p.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(p.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,r.prototype=new n,n.prototype=null),r});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,f=Object.prototype,p=u.slice,m=d.bind(f.toString),g=d.bind(f.hasOwnProperty);if((h=g(f,"__defineGetter__"))&&(s=d.bind(f.__defineGetter__),a=d.bind(f.__defineSetter__),l=d.bind(f.__lookupGetter__),c=d.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];if(i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),i.length,t+1==i.length)return!0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:e<0&&(e=Math.max(i+e,0)),e+ta)for(d=c;d--;)this[l+d]=this[a+d];if(o&&e===h)this.length=h,this.push.apply(this,r);else for(this.length=h+o,d=0;d>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(n),o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;s>>0,o=[],s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;o>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,o=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do{o in this&&(r=e.call(void 0,r,i[o],o,t))}while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=y&&"[object String]"==m(this)?this.split(""):_(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=o(arguments[1])),n=n>=0?n:Math.max(0,i+n);n>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(g(e,t)){var i,n,r;if(i={enumerable:!0,configurable:!0},h){var o=e.__proto__;e.__proto__=f;var n=l(e,t),r=c(e,t);if(e.__proto__=o,n||r)return n&&(i.get=n),r&&(i.set=r),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var A;A=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=A();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var E=r({}),C="undefined"==typeof document||r(document.createElement("div"));if(!E||!C)var b=Object.defineProperty}if(!Object.defineProperty||b){Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Property description must be an object: "+i);if(b)try{return b.call(Object,e,t,i)}catch(e){}if(g(i,"value"))if(h&&(l(e,t)||c(e,t))){var n=e.__proto__;e.__proto__=f,delete e[t],e[t]=i.value,e.__proto__=n}else e[t]=i.value;else{if(!h)throw new TypeError("getters & setters can not be defined on this javascript engine");g(i,"get")&&s(e,t,i.get),g(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var F=!0,x=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],S=x.length;for(var $ in{toString:null})F=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var i in e)g(e,i)&&t.push(i);if(F)for(var n=0,r=S;n=0?parseFloat((r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var r="location"in t?t.location:t.keyLocation;if(17===i&&1===r)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===r){var h=t.timeStamp-l;h<50&&(a.altGr=!0)}}}if(i in o.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&i<=93&&(i=-1),!n&&13===i){var r="location"in t?t.location:t.keyLocation;if(3===r&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return!!(n||i in o.FUNCTION_KEYS||i in o.PRINTABLE_KEYS)&&e(t,n,i)}function r(){a=Object.create(null)}var o=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){if(e.removeEventListener)return e.removeEventListener(t,i,!1);e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function r(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,r;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,r=t.clientY}),t.addListener(e,"touchmove",function(e){var t=e.changedTouches[0];e.wheelX=-(t.clientX-n)/1,e.wheelY=-(t.clientY-r)/1,n=t.clientX,r=t.clientY,i(e)})}},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){function o(e){if(0!==t.getButton(e)?d=0:e.detail>1?++d>4&&(d=1):d=1,s.isIE){var o=Math.abs(e.clientX-l)>5||Math.abs(e.clientY-c)>5;h&&!o||(d=1),h&&clearTimeout(h),h=setTimeout(function(){h=null},i[d-1]||600),1==d&&(l=e.clientX,c=e.clientY)}if(e._clicks=d,n[r]("mousedown",e),d>4)d=0;else if(d>1)return n[r](u[d],e)}function a(e){d=2,h&&clearTimeout(h),h=setTimeout(function(){h=null},i[d-1]||600),n[r]("mousedown",e),n[r](u[d],e)}var l,c,h,d=0,u={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",o),s.isOldIE&&t.addListener(e,"dblclick",a)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;o(e,"keydown",function(e){l=e.keyCode}),o(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;o(e,"keydown",function(e){a[e.keyCode]=(a[e.keyCode]||0)+1;var t=n(i,e,e.keyCode);return c=e.defaultPrevented,t}),o(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,"keyup",function(e){a[e.keyCode]=null}),a||(r(),o(window,"focus",r))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){t.nextTick=function(e,i){i=i||window;t.addListener(i,"message",function n(r){"zero-timeout-message-1"==r.data&&(t.stopPropagation(r),t.removeListener(i,"message",n),e())}),i.postMessage("zero-timeout-message-1","*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};t.stringTrimLeft=function(e){return e.replace(/^\s\s*/,"")},t.stringTrimRight=function(e){return e.replace(/\s\s*$/,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;i=53&&B()}},I=s.delayedCall(O,50);n.addListener(d,"compositionstart",M),r.isGecko?n.addListener(d,"text",function(){I.schedule()}):(n.addListener(d,"keyup",function(){I.schedule()}),n.addListener(d,"keydown",function(){I.schedule()})),n.addListener(d,"compositionend",j),this.getElement=function(){return d},this.setReadOnly=function(e){d.readOnly=e},this.onContextMenu=function(e){D=!0,i(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,i){if(i||!r.isOldIE){g||(g=d.style.cssText),d.style.cssText=(i?"z-index:100000;":"")+"height:"+d.style.height+";"+(r.isIE?"opacity:0.1;":"");var s=t.container.getBoundingClientRect(),a=o.computedStyle(t.container),l=s.top+(parseInt(a.borderTopWidth)||0),c=s.left+(parseInt(s.borderLeftWidth)||0),u=s.bottom-l-d.clientHeight-2,f=function(e){d.style.left=e.clientX-c-2+"px",d.style.top=Math.min(e.clientY-l-2,u)+"px"};f(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(N),r.isWin&&!r.isOldIE&&n.capture(t.container,f,h))}},this.onContextMenuClose=h;var N,W=function(e){t.textInput.onContextMenu(e),h()};n.addListener(d,"mouseup",W),n.addListener(d,"mousedown",function(e){e.preventDefault(),h()}),n.addListener(t.renderer.scroller,"contextmenu",W),n.addListener(d,"contextmenu",W)};t.TextInput=c}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}function o(e,t){if(e.start.row==e.end.row)var i=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)var i=2*t.row-e.start.row-e.end.row;else var i=t.column-4;return i<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}e("../lib/dom"),e("../lib/event"),e("../lib/useragent");(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,r=e.getButton();if(0!==r){var o=n.getSelectionRange(),s=o.isEmpty();return n.$blockScrolling++,(s||1==r)&&n.selection.moveToPosition(i),n.$blockScrolling--,void(2==r&&n.textInput.onContextMenu(e.domEvent))}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&a<=0)t=this.$clickSelection.end,r.end.row==n.row&&r.end.column==n.column||(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,r.start.row==n.row&&r.start.column==n.column||(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>0||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,r=n.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor;return n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||i<200?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor;if(n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)||i<200)return this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=r.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,r=l.$annotations[t];if(!r)return i();if(t==s.session.getLength()){var o=s.renderer.pixelToScreenCoordinates(0,d.y).row,a=d.$pos;if(o>s.session.documentToScreenRow(a.row,a.column))return i()}if(u!=r)if(u=r.text.join("
"),c.setHtml(u),c.show(),s._signal("showGutterTooltip",c),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var h=d.domEvent.target,f=h.getBoundingClientRect(),p=c.getElement().style;p.left=f.right+"px",p.top=f.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s._signal("hideGutterTooltip",c),s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){if("foldWidgets"!=l.getRegion(t)){var i=t.getDocumentPosition().row,n=s.session.selection;if(t.getShiftKey())n.selectTo(i,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(i)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(r){var s=r.domEvent.target||r.domEvent.srcElement;if(o.hasCssClass(s,"ace_fold-widget"))return i();u&&e.$tooltipFollowsMouse&&n(r),d=r,h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function r(e){l.call(this,e)}var o=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>i&&(e-=e+r-i),t+o>n&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=n}), -ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!$||n||o)g.$blockScrolling+=1,g.moveCursorToPosition(e),g.$blockScrolling-=1,$=i,D={x:y,y:A};else{r(D.x,D.y,y,A)>h?$=null:i-$>=c&&(g.renderer.scrollCursorIntoView(),$=null)}}function i(e,t){var i=Date.now(),n=g.renderer.layerConfig.lineHeight,r=g.renderer.layerConfig.characterWidth,o=g.renderer.scroller.getBoundingClientRect(),s={x:{left:y-o.left,right:o.right-y},y:{top:A-o.top,bottom:o.bottom-A}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};a/r<=2&&(h.column+=s.x.left=l&&g.renderer.scrollCursorIntoView(h):S=i:S=null}function n(){var e=b;b=g.renderer.screenToTextCoordinates(y,A),t(b,e),i(b,e)}function d(){C=g.selection.toOrientedRange(),w=g.session.addMarker(C,"ace_selection",g.getSelectionStyle()),g.clearSelection(),g.isFocused()&&g.renderer.$cursorLayer.setBlinking(!1),clearInterval(E),n(),E=setInterval(n,20),B=0,s.addListener(document,"mousemove",f)}function u(){clearInterval(E),g.session.removeMarker(w),w=null,g.$blockScrolling+=1,g.selection.fromOrientedRange(C),g.$blockScrolling-=1,g.isFocused()&&!x&&g.renderer.$cursorLayer.setBlinking(!g.getReadOnly()),C=null,b=null,B=0,S=null,$=null,s.removeListener(document,"mousemove",f)}function f(){null==_&&(_=setTimeout(function(){null!=_&&w&&u()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function m(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=a.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(r)>=0?o="copy":i.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}var g=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(t){e[t]=this[t]},this),g.addEventListener("mousedown",this.onMouseDown.bind(e));var w,y,A,E,C,b,F,x,S,$,D,k=g.container,B=0;this.onDragStart=function(e){if(this.cancelDrag||!k.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}C=g.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=g.getReadOnly()?"copy":"copyMove",a.isOpera&&(g.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.isOpera&&g.container.removeChild(v),i.clearData(),i.setData("Text",g.session.getTextRange()),x=!0,this.setState("drag")},this.onDragEnd=function(e){if(k.draggable=!1,x=!1,this.setState(null),!g.getReadOnly()){var t=e.dataTransfer.dropEffect;F||"move"!=t||g.session.remove(g.getSelectionRange()),g.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!g.getReadOnly()&&p(e.dataTransfer))return y=e.clientX,A=e.clientY,w||d(),B++,e.dataTransfer.dropEffect=F=m(e),s.preventDefault(e)},this.onDragOver=function(e){if(!g.getReadOnly()&&p(e.dataTransfer))return y=e.clientX,A=e.clientY,w||(d(),B++),null!==_&&(_=null),e.dataTransfer.dropEffect=F=m(e),s.preventDefault(e)},this.onDragLeave=function(e){if(--B<=0&&w)return u(),F=null,s.preventDefault(e)},this.onDrop=function(e){if(b){var t=e.dataTransfer;if(x)switch(F){case"move":C=C.contains(b.row,b.column)?{start:b,end:b}:g.moveText(C,b);break;case"copy":C=g.moveText(C,b,!0)}else{var i=t.getData("Text");C={start:b,end:g.session.insert(b,i)},g.focus(),F=null}return u(),s.preventDefault(e)}},s.addListener(k,"dragstart",this.onDragStart.bind(e)),s.addListener(k,"dragend",this.onDragEnd.bind(e)),s.addListener(k,"dragenter",this.onDragEnter.bind(e)),s.addListener(k,"dragover",this.onDragOver.bind(e)),s.addListener(k,"dragleave",this.onDragLeave.bind(e)),s.addListener(k,"drop",this.onDrop.bind(e));var _=null}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=a.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton();if(1===(e.domEvent.detail||1)&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in r&&(r.unselectable="on"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;t.container.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),r=document.createElement("script");r.src=e,i.appendChild(r),r.onload=r.onreadystatechange=function(e,i){!i&&r.readyState&&"loaded"!=r.readyState&&"complete"!=r.readyState||(r=r.onload=r.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;s1&&(r=i[i.length-2]);var s=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+r+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var r,o;Array.isArray(i)&&(o=i[0],i=i[1]);try{r=e(i)}catch(e){}if(r&&!t.$loading[i])return n&&n(r);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var s=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return s();a.loadScript(t.moduleUrl(i,o),s)}},r(!0),t.init=r}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var i=function(t){(!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement()))&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",i),r.isIE&&e.renderer.scrollBarV&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i)),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),r=e.session.selection.getRange(),o=e.renderer;!r.isEmpty()&&r.insideStart(n.row,n.column)?o.setCursorStyle("default"):o.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=n.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,r=n.getFoldAt(i.row,i.column,1);r&&(t.getAccelKey()?n.removeFold(r):n.expandFold(r),t.stop())}),e.on("gutterclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session;n.foldWidgets&&n.foldWidgets[i]&&e.session.onFoldWidgetClick(i,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session,r=n.getParentFoldRangeData(i,!0),o=r.range||r.firstRange;if(o){i=o.start.row;var s=n.getFoldAt(i,n.getLine(i).length,1);s?n.removeFold(s):(n.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),r=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&!((o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n))&&o.command&&(s="null"==o.command||a.exec(o.command,this.$editor,o.args,n),s&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(n),s)););return s||-1!=e||(o={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal&&this.$editor._signal("keyboardActivity",o),s},this.onCommandKey=function(e,t,i){var r=n.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var n={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(n);return r?(n=r.start.row,i=r.end.row):i=n,!0===t?new s(n,0,i,this.session.getLine(i).length):new s(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(e,t,1);return r?void this.moveCursorTo(r.end.row,r.end.column):(this.session.nonTokenRe.exec(n)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,n=i.substring(t)),t>=i.length?(this.moveCursorTo(e,i.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(o)&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,i)},this.$shortWordEndIndex=function(e){var t,i=0,n=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,this.session.tokenRe.exec(e))i=this.session.tokenRe.lastIndex;else{for(;(t=e[i])&&n.test(t);)i++;if(i<1)for(r.lastIndex=0;(t=e[i])&&!r.test(t);)if(r.lastIndex=0,i++,n.test(t)){if(i>2){i--;break}for(;(t=e[i])&&n.test(t);)i++;if(i>2)break}}return r.lastIndex=0,i},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==i.length){var o=this.doc.getLength();do{e++,n=this.doc.getLine(e)}while(e0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=r.stringReverse(n),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&(n.row>0||e>0)&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var i=this.getCursor();return s.fromPoints(t,i)}catch(e){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],r=0,o=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=d,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],r=0,o=i.length;rh){var v=e.substring(h,g-m.length);u.type==f?u.value+=v:(u.type&&c.push(u),u={type:f,value:v})}for(var w=0;wr){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,r=e("../../lib/oop"),o=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t])return n=h[t];n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},u=function(e,t,i,n){var r=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(){this.add("braces","insertion",function(e,t,i,r,o){var s=i.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){d(i);var c=i.getSelectionRange(),h=r.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(f.isSaneInsertion(i,r))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(f.recordAutoInsert(i,r,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(i,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){d(i);var p=l.substring(s.column,s.column+1);if("}"==p){var m=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&f.isAutoInsertedClosing(s,l,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){d(i);var g="";f.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing());var p=l.substring(s.column,s.column+1);if("}"===p){var v=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var w=this.$getIndent(r.getLine(v.row))}else{if(!g)return void f.clearMaybeInsertedClosing();var w=this.$getIndent(l)}var y=w+r.getTabString();return{text:"\n"+y+"\n"+w+g,selection:[1,y.length,1,y.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){d(i);if("}"==r.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,r){if("("==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o){d(i);if(")"==n.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2))return r.end.column++,r}}),this.add("brackets","insertion",function(e,t,i,n,r){if("["==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o){d(i);if("]"==n.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2))return r.end.column++,r}}),this.add("string_dquotes","insertion",function(e,t,i,n,r){if('"'==r||"'"==r){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(r))return;d(i);var o=r,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,o,o);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),f=c.substring(l.column,l.column+1),p=n.getTokenAt(l.row,l.column),m=n.getTokenAt(l.row,l.column+1);if("\\"==h&&p&&/escape/.test(p.type))return null;var g,v=p&&/string|escape/.test(p.type),w=!m||/string|escape/.test(m.type);if(f==o)(g=v!==w)&&/string\.end/.test(m.type)&&(g=!1);else{if(v&&!w)return null;if(v&&w)return null;var y=n.$mode.tokenRe;y.lastIndex=0;var A=y.test(h);y.lastIndex=0;var E=y.test(h);if(A||E)return null;if(f&&!/[\s;,.})\]\\]/.test(f))return null;g=!0}return{text:g?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)){d(i);if(n.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==o)return r.end.column++,r}})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var r=new s(t,i.row,i.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=r.row,n.autoInsertedLineEnd=i+o.substr(r.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=r.row,n.maybeInsertedLineStart=o.substr(0,r.column)+i,n.maybeInsertedLineEnd=o.substr(r.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},r.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/unicode",["require","exports","module"],function(e,t,i){"use strict";t.packages={},function(e){for(var i in e)t.packages[i]=e[i].replace(/\w{4}/g,"\\u$&")}({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26", -Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=r};(function(){this.$defaultBehaviour=new o,this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function r(e){for(var t=i;t<=n;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),f=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var p=function(e,t){var i=e.match(u);if(i){var n=i[1].length,r=i[0].length;w(e,n,r)||" "!=i[0][r-1]||r--,o.removeInLine(t,n,r)}},m=f+" ",g=function(e,t){s&&!/\S/.test(e)||(w(e,c,c)?o.insertInLine({row:t,column:c},m):o.insertInLine({row:t,column:c},f))},v=function(e,t){return u.test(e)},w=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,y=this.blockComment.end,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(f)+")"),A=new RegExp("(?:"+a.escapeRegExp(y)+")\\s*$"),g=function(e,t){v(e,t)||s&&!/\S/.test(e)||(o.insertInLine({row:t,column:e.length},y),o.insertInLine({row:t,column:c},f))},p=function(e,t){var i;(i=e.match(A))&&o.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(u))&&o.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.test(e))return!0;for(var n=t.getTokens(i),r=0;re.length&&(E=e.length)}),c==1/0&&(c=E,s=!1,l=!1),d&&c%h!=0&&(c=Math.floor(c/h)*h),r(l?p:g)},this.toggleBlockComment=function(e,t,i,n){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,f;h&&/comment/.test(h.type);){var p=h.value.indexOf(r.start);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;u=new c(m,g,m,g+r.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var p=h.value.indexOf(r.end);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;f=new c(m,g,m,g+r.end.length);break}h=a.stepForward()}f&&t.remove(f),u&&(t.remove(u),o=u.start.row,s=-r.start.length)}else s=r.start.length,o=i.start.row,t.insert(i.end,r.end),t.insert(i.start,r.start);d.start.row==o&&(d.start.column+=s),d.end.row==o&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;tthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var r={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:r,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):e<0?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),t<0&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:e<0?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);return t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=t||0,o=i.length;r20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,o<=n&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;l<=a;l++){var c=this.cache[l];null==c&&(c=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;c0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);i<0&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return n<0?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.apply(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var i,n=t[0],o=1;o=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=o)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&lh.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=o}}}if(0!=o&&l=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,r=0;r=t){a=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof s?i=e:(i=new s(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(a0&&(this.removeFolds(f),f.forEach(function(e){i.addSubFold(e)}));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,n;if(null==e?(i=new r(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new r(e,0,e,this.getLine(e).length):"row"in e?r.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var o=n;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);if(n.length)return n},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,r){null==n&&(n=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,s="";return e.walk(function(e,t,i,a){if(!(t=e){r=o.end.row;try{var s=this.addFold("...",o);s&&(s.collapseChildren=i)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,r=e-1;r>=0;){var o=i[r];if(null==o&&(o=i[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(n||(n=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,i)){var n=t.target||t.srcElement;n&&/ace_fold-widget/.test(n.className)&&(n.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),r="end"===i?-1:1,o=this.getFoldAt(e,-1===r?0:n.length,r);if(o)return t.children||t.all?this.removeFold(o):this.expandFold(o),o;var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(o.range))return this.removeFold(o),o;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,o=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){if(0==(o-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do{a=s.stepBackward()}while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;l=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}n.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;i<=n;){var r=i+n>>1,o=e[r];if(t>o)i=r+1;else{if(!(t=t);o++);return(i=n[o])?(i.index=o,i.start=r-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var r=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var r=/\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do{o--}while(o>=0&&i.charAt(o).match(r));o++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;ls){if((l=o.end.row+1)>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var r=e[n];"doc"==r.group?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,n),r.length){var l=e.start,h=o.start,s=h.row-l.row,a=h.column-l.column -;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;n<=t;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(0,0,0,0),n=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);i.start.row=r,i.end.row=r;for(var s=0;s0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var r=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1&&(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,r=e.end,o=n.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(r.row),d=0;if(h){h.addRemoveChars(r.row,r.column,n.column-r.column),h.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=r.row&&h.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,h=this.getFoldLine(o),d=0;if(h){var m=h.range.compareInside(n.row,n.column);0==m?(h=h.split(n.row,n.column))&&(h.shiftRow(a),h.addRemoveChars(s,0,r.column-n.column)):-1==m&&(h.addRemoveChars(o,0,r.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=o&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,n){var r,o,s=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,h=e;for(n=Math.min(n,s.length-1);h<=n;)o=this.getFoldLine(h,o),o?(r=[],o.walk(function(e,n,o,a){var l;if(null!=e){l=this.$getDisplayTokens(e,r.length),l[0]=t;for(var c=1;cn-v;){var w=d+n-v;if(e[w-1]>=a&&e[w]>=a)s(w);else if(e[w]!=t&&e[w]!=i){for(var y=Math.max(w-(n-(n>>2)),d-1);w>y&&e[w]y&&e[w]y&&9==e[w];)w--}else for(;w>y&&e[w]y?s(++w):(w=d+n,2==e[w]&&w--,s(w-v))}else{for(w;w!=d-1&&e[w]!=t;w--);if(w>d){s(w);continue}for(w=d+n;w39&&s<48||s>57&&s<64?r.push(9):s>=4352&&e(s)?r.push(1,2):r.push(1)}return r},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var r,o;for(o=0;o=4352&&e(r)?n+=2:n+=1,!(n>i));o++);return[n,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]=0)var s=l[c],r=this.$docRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,f=this.getNextFoldLine(r),p=f?f.start.row:1/0;s<=e&&(a=this.getRowLength(r),!(s+a>e||r>=u));)s+=a,++r>p&&(r=f.end.row+1,f=this.getNextFoldLine(r,f),p=f?f.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(s));if(f&&f.start.row<=r)i=this.getFoldDisplayLine(f),r=f.start.row;else{if(s+a<=e||r>u)return{row:u,column:this.getLine(u).length};i=this.getLine(r),f=null}var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){var v=Math.floor(e-s);n=g[v],v>0&&g.length&&(m=g.indent,o=g[v-1]||g[g.length-1],i=i.substring(o))}}return o+=this.$getStringScreenWidth(i,t-m)[1],this.$useWrapMode&&o>=n&&(o=n-1),f?f.idxToPosition(o):{row:r,column:o}},this.documentToScreenPosition=function(e,t){if(void 0===t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,r=null,o=null;(o=this.getFoldAt(e,t,1))&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),f=u?u.start.row:1/0;a=f){if((s=u.end.row+1)>e)break;u=this.getNextFoldLine(s,u),f=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var p="";u&&a>=f?(p=this.getFoldDisplayLine(u,e,t),r=u.start.row):(p=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){for(var v=0;p.length>=g[v];)n++,v++;p=p.substring(g[v-1]||0,p.length),m=v>0?g.indent:0}}return{row:n,column:m+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;no&&(n=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;ri));o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";function n(e,t){function i(e){return/\w/.test(e)||t.regExp?"\\b":""}return i(e[0])+e+i(e[e.length-1])}var r=e("./lib/lang"),o=e("./lib/oop"),s=e("./range").Range,a=function(){this.$options={}};(function(){this.set=function(e){return o.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,r){if(e.start)n=e;else{var o=e.offset+(r||0);if(n=new s(i,o,i,o+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,n=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),o=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=n.length-c;e:for(var d=a.offset||0;d<=h;d++){for(var u=0;um||(o.push(l=new s(d,m,d+c-1,g)),c>2&&(d=d+c-2))}}else for(var v=0;vE&&o[u].end.row==i.end.row;)u--;for(o=o.slice(v,u+1),v=0,u=o.length;v=0;a--)if(n(s[a],t,o))return!0};else var a=function(e,t,o){for(var s=r.getMatchOffsets(e,i),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=o.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=o.row;if(!i(e.getLine(n).substr(o.column),n,o.column)){for(n+=1;n<=a;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=o.row;n<=a;n++)if(i(e.getLine(n),n))return}}}}}).call(a.prototype),t.Search=a}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){n.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),s=e("../lib/useragent"),a=o.KEY_MODS;r.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var r in n){var o=n[r];if(o==e)delete n[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(n[r]=o[0]))}}},this.bindKey=function(e,t,i){if("object"==typeof e&&e&&(void 0==i&&(i=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),i=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(n+s,t,i)},this)},this._addCommandToBinding=function(t,i,n){var r,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(i))&&o[t].splice(r,1):o[t]=[o[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=o[t];for(r=0;rn)break}s.splice(r,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(n<0)){var r=a[t]+i,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=r}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,r),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:i};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),!1!==r.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),o=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","F4"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Shift-F4"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:n("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:n("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=n.row+1;h++){var d=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(o=e.session.doc.getLine(i.row).length>o?o+1:o,e.selection.moveCursorTo(i.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,r=[];n.length<1&&(n=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;v.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.off("changeCursor",this.$onCursorChange),i.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new f(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new w(e.session,i.row,i.column),r=n.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=n.stepForward())){var o=r.value,s=0,a=n.stepBackward();if("<"==a.value)do{a=r,(r=n.stepForward())&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=0);else{do{r=a,a=n.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new f(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(s)||n<=o&&/[\w\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s})}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var r=n.length;r--;){var o=n[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(r.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if("\t"==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(r.row);if(r.column>a.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);i.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,h=i.getState(r.row),a=i.getLine(r.row),d=n.checkOutdent(h,a,e);i.insert(r,e);if(o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new f(r.row,c+o.selection[0],r.row,c+o.selection[1])):this.selection.setSelectionRange(new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3]))),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,r.column),i.getTabString());i.insert({row:r.row+1,column:0},u)}d&&n.autoOutdent(h,i,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),r=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new f(0,0,0,0),r=e.first;r<=e.last;r++){var o=t.getLine(r);n.start.row=r,n.end.row=r,n.end.column=o.length,t.replace(n,i[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){return{value:r[0],start:r.index,end:r.index+r[0].length}}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new f(t,i-1,t,i),r=this.session.getTextRange(n);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,i);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),s!==o.end&&if+1)break;f=p.last}for(h--,a=this.session.$moveLines(u,f,t?0:e),t&&-1==e&&(d=h+1);d<=h;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,r=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):!1===t&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,r*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1}, -this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new w(this.session,i.row,i.column),r=n.getCurrentToken(),o=r||n.stepForward();if(o){var s,a,l=!1,c={},h=i.column-o.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;n=o.top>=0&&a+t.top<0||!(o.topwindow.innerHeight)&&null,null!=n&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",o),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(y.prototype),v.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/oop"),o=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(m=o.end.row+1,o=t.getNextFoldLine(m,o),s=o?o.start.row:1/0),m>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=n.createElement("div"),f.textNode=document.createTextNode(""),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f);var g="ace_gutter-cell ";l[m]&&(g+=l[m]),c[m]&&(g+=c[m]),this.$annotations[m]&&(g+=this.$annotations[m].className),f.element.className!=g&&(f.element.className=g);var v=t.getRowLength(m)*e.lineHeight+"px";if(v!=f.element.style.height&&(f.element.style.height=v),a){var w=a[m];null==w&&(w=a[m]=t.getFoldWidget(m))}if(w){f.foldWidget||(f.foldWidget=n.createElement("span"),f.element.appendChild(f.foldWidget));var g="ace_fold-widget ace_"+w;"start"==w&&m==s&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var r=n.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),n.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+r.start.column*e.characterWidth;n.renderer(t,r,s,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,r,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,r,n.clazz,e):r.isMultiLine()?"text"==n.type?this.drawTextMarker(t,r,n.clazz,e):this.drawMultiLineMarker(t,r,n.clazz,e):this.drawSingleLineMarker(t,r,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,r,o,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,f=a.getScreenLastRowColumn(h),p=new n(h,i.start.column,h,u);h<=c;h++)p.start.row=p.end.row=h,p.start.column=h==l?i.start.column:a.getRowWrapIndent(h),p.end.column=f,d=u,u=f,f=h+1f,h==c),o,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,r){var o=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=o+t.start.column*n.characterWidth;r=r||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),!((s=(t.end.row-t.start.row-1)*n.lineHeight)<=0)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,r,o){var s=n.lineHeight,a=(t.end.column+(r||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;i"+o.stringRepeat(this.TAB_CHAR,i)+""):t.push(o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings["\t"]=""+l+""}},this.updateLines=function(e,t,i){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),r=Math.min(i,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;ac&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var h=o[s++];if(h){var d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c&&l),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(r)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>i)break;var l=r.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a&&s),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,r=i,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==s&&o),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=function(e,i,n,s,a){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if("\t"==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(" "==e){var c=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},a=n.replace(/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,s);if(this.$textToken[i.type])e.push(a);else{var l="ace_"+i.type.replace(/\./g," ace_"),c="";"fold"==i.type&&(c=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return n<=0||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):"\t"==t[0]?(e.push(o.stringRepeat(this.$tabStrings["\t"],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var r=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-r)),d=d.substring(a-r),r=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(r+=d.length,l=this.$renderToken(e,l,h,d))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],r=n.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(i=this.$renderToken(e,i,n,r));for(var o=1;o"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,i):this.$renderSimpleLine(e,r)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,o=0;o+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),r.push({type:e[n].type,value:s}),o=t+s.length,n+=1}for(;oi?r.push({type:e[n].type,value:s.substring(0,i-o)}):r.push(e[n]),o+=s.length,n+=1}}var n=this.session,r=[],o=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:"fold",value:e}):(l&&(o=n.getTokens(t)),o.length&&i(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e);return{left:this.$padding+i.column*this.config.characterWidth,top:(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);for(var i=0,r=t.length;ie.height+e.offset||o.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[i],this.session):(s.left=o.left+"px",s.top=o.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>32768?(this.coeff=32768/e,e=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var t={height:e.height,width:e.width/l}}else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=o.stringRepeat(e,l),this.$main.getBoundingClientRect().width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,f=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter;r.importCssString('.ace_editor {\tposition: relative;\toverflow: hidden;\tfont: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\tdirection: ltr;\ttext-align: left;\t}\t.ace_scroller {\tposition: absolute;\toverflow: hidden;\ttop: 0;\tbottom: 0;\tbackground-color: inherit;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\tcursor: text;\t}\t.ace_content {\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmin-width: 100%;\t}\t.ace_dragging .ace_scroller:before{\tposition: absolute;\ttop: 0;\tleft: 0;\tright: 0;\tbottom: 0;\tcontent: \'\';\tbackground: rgba(250, 250, 250, 0.01);\tz-index: 1000;\t}\t.ace_dragging.ace_dark .ace_scroller:before{\tbackground: rgba(0, 0, 0, 0.01);\t}\t.ace_selecting, .ace_selecting * {\tcursor: text !important;\t}\t.ace_gutter {\tposition: absolute;\toverflow : hidden;\twidth: auto;\ttop: 0;\tbottom: 0;\tleft: 0;\tcursor: default;\tz-index: 4;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\t}\t.ace_gutter-active-line {\tposition: absolute;\tleft: 0;\tright: 0;\t}\t.ace_scroller.ace_scroll-left {\tbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\t}\t.ace_gutter-cell {\tpadding-left: 19px;\tpadding-right: 6px;\tbackground-repeat: no-repeat;\t}\t.ace_gutter-cell.ace_error {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");\tbackground-repeat: no-repeat;\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_warning {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\tbackground-position: 2px center;\t}\t.ace_dark .ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\t}\t.ace_scrollbar {\tposition: absolute;\tright: 0;\tbottom: 0;\tz-index: 6;\t}\t.ace_scrollbar-inner {\tposition: absolute;\tcursor: text;\tleft: 0;\ttop: 0;\t}\t.ace_scrollbar-v{\toverflow-x: hidden;\toverflow-y: scroll;\ttop: 0;\t}\t.ace_scrollbar-h {\toverflow-x: scroll;\toverflow-y: hidden;\tleft: 0;\t}\t.ace_print-margin {\tposition: absolute;\theight: 100%;\t}\t.ace_text-input {\tposition: absolute;\tz-index: 0;\twidth: 0.5em;\theight: 1em;\topacity: 0;\tbackground: transparent;\t-moz-appearance: none;\tappearance: none;\tborder: none;\tresize: none;\toutline: none;\toverflow: hidden;\tfont: inherit;\tpadding: 0 1px;\tmargin: 0 -1px;\ttext-indent: -1em;\t-ms-user-select: text;\t-moz-user-select: text;\t-webkit-user-select: text;\tuser-select: text;\twhite-space: pre!important;\t}\t.ace_text-input.ace_composition {\tbackground: inherit;\tcolor: inherit;\tz-index: 1000;\topacity: 1;\ttext-indent: 0;\t}\t.ace_layer {\tz-index: 1;\tposition: absolute;\toverflow: hidden;\tword-wrap: normal;\twhite-space: pre;\theight: 100%;\twidth: 100%;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tpointer-events: none;\t}\t.ace_gutter-layer {\tposition: relative;\twidth: auto;\ttext-align: right;\tpointer-events: auto;\t}\t.ace_text-layer {\tfont: inherit !important;\t}\t.ace_cjk {\tdisplay: inline-block;\ttext-align: center;\t}\t.ace_cursor-layer {\tz-index: 4;\t}\t.ace_cursor {\tz-index: 4;\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tborder-left: 2px solid;\ttransform: translatez(0);\t}\t.ace_slim-cursors .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_overwrite-cursors .ace_cursor {\tborder-left-width: 0;\tborder-bottom: 1px solid;\t}\t.ace_hidden-cursors .ace_cursor {\topacity: 0.2;\t}\t.ace_smooth-blinking .ace_cursor {\t-webkit-transition: opacity 0.18s;\ttransition: opacity 0.18s;\t}\t.ace_editor.ace_multiselect .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\tposition: absolute;\tz-index: 3;\t}\t.ace_marker-layer .ace_selection {\tposition: absolute;\tz-index: 5;\t}\t.ace_marker-layer .ace_bracket {\tposition: absolute;\tz-index: 6;\t}\t.ace_marker-layer .ace_active-line {\tposition: absolute;\tz-index: 2;\t}\t.ace_marker-layer .ace_selected-word {\tposition: absolute;\tz-index: 4;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\t}\t.ace_line .ace_fold {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tdisplay: inline-block;\theight: 11px;\tmargin-top: -2px;\tvertical-align: middle;\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\tbackground-repeat: no-repeat, repeat-x;\tbackground-position: center center, top left;\tcolor: transparent;\tborder: 1px solid black;\tborder-radius: 2px;\tcursor: pointer;\tpointer-events: auto;\t}\t.ace_dark .ace_fold {\t}\t.ace_fold:hover{\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\t}\t.ace_tooltip {\tbackground-color: #FFF;\tbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\tbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\tborder: 1px solid gray;\tborder-radius: 1px;\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\tcolor: black;\tmax-width: 100%;\tpadding: 3px 4px;\tposition: fixed;\tz-index: 999999;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tcursor: default;\twhite-space: pre;\tword-wrap: break-word;\tline-height: normal;\tfont-style: normal;\tfont-weight: normal;\tletter-spacing: normal;\tpointer-events: none;\t}\t.ace_folding-enabled > .ace_gutter-cell {\tpadding-right: 13px;\t}\t.ace_fold-widget {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmargin: 0 -12px 0 1px;\tdisplay: none;\twidth: 11px;\tvertical-align: top;\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\tbackground-repeat: no-repeat;\tbackground-position: center;\tborder-radius: 3px;\tborder: 1px solid transparent;\tcursor: pointer;\t}\t.ace_folding-enabled .ace_fold-widget {\tdisplay: inline-block; \t}\t.ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\t}\t.ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\t}\t.ace_fold-widget:hover {\tborder: 1px solid rgba(0, 0, 0, 0.3);\tbackground-color: rgba(255, 255, 255, 0.2);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\t}\t.ace_fold-widget:active {\tborder: 1px solid rgba(0, 0, 0, 0.4);\tbackground-color: rgba(0, 0, 0, 0.05);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\t}\t.ace_dark .ace_fold-widget {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\t}\t.ace_dark .ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget:hover {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\tbackground-color: rgba(255, 255, 255, 0.1);\t}\t.ace_dark .ace_fold-widget:active {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\t}\t.ace_fold-widget.ace_invalid {\tbackground-color: #FFB4B4;\tborder-color: #DE5555;\t}\t.ace_fade-fold-widgets .ace_fold-widget {\t-webkit-transition: opacity 0.4s ease 0.05s;\ttransition: opacity 0.4s ease 0.05s;\topacity: 0;\t}\t.ace_fade-fold-widgets:hover .ace_fold-widget {\t-webkit-transition: opacity 0.05s ease 0.05s;\ttransition: opacity 0.05s ease 0.05s;\topacity:1;\t}\t.ace_underline {\ttext-decoration: underline;\t}\t.ace_bold {\tfont-weight: bold;\t}\t.ace_nobold .ace_bold {\tfont-weight: normal;\t}\t.ace_italic {\tfont-style: italic;\t}\t.ace_error-marker {\tbackground-color: rgba(255, 0, 0,0.2);\tposition: absolute;\tz-index: 9;\t}\t.ace_highlight-marker {\tbackground-color: rgba(255, 255, 0,0.2);\tposition: absolute;\tz-index: 8;\t}\t.ace_br1 {border-top-left-radius : 3px;}\t.ace_br2 {border-top-right-radius : 3px;}\t.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\t.ace_br4 {border-bottom-right-radius: 3px;}\t.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\t.ace_br8 {border-bottom-left-radius : 3px;}\t.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t',"ace_editor.css");var g=function(e,t){var i=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,n.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;n||(n=r.clientHeight||r.scrollHeight),i||(i=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(r|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!i||!n,r&&this._signal("resize",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,r=this.lineHeight;if(t<0||t>e.height-r)return void(n.top=n.left="0");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=r+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-r)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|n,r.left=0|i,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i), -this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&i>this.$maxPixelHeight&&(i=this.$maxPixelHeight);var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var r=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,o=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,r-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var f=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+d<0||this.scrollTop>u.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var m,g,v=Math.ceil(h/this.lineHeight)-1,w=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),y=w+v,A=this.lineHeight;w=e.screenToDocumentRow(w,0);var E=e.getFoldLine(w);E&&(w=E.start.row),m=e.documentToScreenRow(w,0),g=e.getRowLength(w)*A,y=Math.min(e.screenToDocumentRow(y,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(y)*A+g,c=this.scrollTop-m*A;var C=0;return this.layerConfig.width!=o&&(C=this.CHANGE_H_SCROLL),(a||p)&&(C=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:w,firstRowScreen:m,lastRow:y,lineHeight:A,characterWidth:this.characterWidth,minHeight:h,maxHeight:r,offset:c,gutterOffset:A?Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/A)):0,height:this.$size.scrollerHeight},C},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;if(!(e>i.lastRow+1||to?(t&&l+s>o+this.lineHeight&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-ar?(r=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,r=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),o=Math.round(n);return{row:r,column:o,side:n-o>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),r=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(r,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),r=this.$padding+Math.round(n.column*this.characterWidth),o=n.row*this.lineHeight;return{pageX:i.left+r-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(n.$themeId!=e)return t&&t();if(!i||!i.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var o="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&o!=n.$padding&&n.setPadding(o),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),o.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=function(t,n,r,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),a.get("packaged")||!e.toUrl)o=o||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;o=o||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(17),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(e){if(!(e instanceof window.DOMException))throw e;var d=this.$workerBlob(o),f=window.URL||window.webkitURL,p=f.createObjectURL(d);this.$worker=new Worker(p),f.revokeObjectURL(p)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(e){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,n=new i;return n.append(t),n.getBlob("application/javascript")}}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,r=!1,o=Object.create(s),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){l.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](o);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),s=function(e,t,i,n,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=i.addMarker(new n(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=i),r&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,r){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),r,null,!1)};i(this.pos,this.mainClass);for(var r=this.others.length;r--;)i(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;i1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),r=i.start.row,o=i.end.row;if(r==o){if(n)var s=i.end,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(r,!0);h.start.column=i.start.column,c.push(h);for(var d=r+1;d1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(n,r).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.column0;)m--;if(m>0)for(var g=0;n[g].isEmpty();)g++;for(var v=m;v>=g;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var r=t.indexOf(n);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,r=i&&i.keepOrder,o=1==i||i&&i.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(r?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(s);this.inVirtualSelectionMode=!0;for(var f=h.length;f--;){if(o)for(;f>0&&h[f].start.row==h[f-1].end.row;)f--;u.fromOrientedRange(h[f]),u.index=f,this.selection=s.selection=u;var p=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===p||(n=p),u.toOrientedRange(h[f])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,a.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;no&&(o=i.column),rc?e.insert(n,u.stringRepeat(" ",r-c)):e.remove(new l(n.row,n.column,n.row,n.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,f=h==d;if(f){var p,m=this.session.getLength();do{p=this.session.getLine(d)}while(/[=:]/.test(p)&&++d0);h<0&&(h=0),d>=m&&(d=m-1)}var g=this.session.removeFullLines(h,d);g=this.$reAlignText(g,f),this.session.insert({row:h,column:0},g.join("\n")+"\n"),f||(c.start.column=0,c.end.column=g[g.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?r:n:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var r=e.getLine(t),o=r.search(/\S/);if(-1!=o){for(var s=i||r.length,a=e.getLength(),l=t,c=t;++tl){var d=e.getLine(c).length;return new n(l,s,c,d)}}},this.openingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r},a=e.$findOpeningBracket(t,s);if(a)return a.column++,s.column--,n.fromPoints(a,s)}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {\tbackground: #f0f0f0;\tcolor: #333;\t}\t.ace-tm .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8;\t}\t.ace-tm .ace_fold {\tbackground-color: #6B72E6;\t}\t.ace-tm {\tbackground-color: #FFFFFF;\tcolor: black;\t}\t.ace-tm .ace_cursor {\tcolor: black;\t}\t.ace-tm .ace_invisible {\tcolor: rgb(191, 191, 191);\t}\t.ace-tm .ace_storage,\t.ace-tm .ace_keyword {\tcolor: blue;\t}\t.ace-tm .ace_constant {\tcolor: rgb(197, 6, 11);\t}\t.ace-tm .ace_constant.ace_buildin {\tcolor: rgb(88, 72, 246);\t}\t.ace-tm .ace_constant.ace_language {\tcolor: rgb(88, 92, 246);\t}\t.ace-tm .ace_constant.ace_library {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_invalid {\tbackground-color: rgba(255, 0, 0, 0.1);\tcolor: red;\t}\t.ace-tm .ace_support.ace_function {\tcolor: rgb(60, 76, 114);\t}\t.ace-tm .ace_support.ace_constant {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_support.ace_type,\t.ace-tm .ace_support.ace_class {\tcolor: rgb(109, 121, 222);\t}\t.ace-tm .ace_keyword.ace_operator {\tcolor: rgb(104, 118, 135);\t}\t.ace-tm .ace_string {\tcolor: rgb(3, 106, 7);\t}\t.ace-tm .ace_comment {\tcolor: rgb(76, 136, 107);\t}\t.ace-tm .ace_comment.ace_doc {\tcolor: rgb(0, 102, 255);\t}\t.ace-tm .ace_comment.ace_doc.ace_tag {\tcolor: rgb(128, 159, 191);\t}\t.ace-tm .ace_constant.ace_numeric {\tcolor: rgb(0, 0, 205);\t}\t.ace-tm .ace_variable {\tcolor: rgb(49, 132, 149);\t}\t.ace-tm .ace_xml-pe {\tcolor: rgb(104, 104, 91);\t}\t.ace-tm .ace_entity.ace_name.ace_function {\tcolor: #0000A2;\t}\t.ace-tm .ace_heading {\tcolor: rgb(12, 7, 255);\t}\t.ace-tm .ace_list {\tcolor:rgb(185, 6, 144);\t}\t.ace-tm .ace_meta.ace_tag {\tcolor:rgb(0, 22, 142);\t}\t.ace-tm .ace_string.ace_regex {\tcolor: rgb(255, 0, 0)\t}\t.ace-tm .ace_marker-layer .ace_selection {\tbackground: rgb(181, 213, 255);\t}\t.ace-tm.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px white;\t}\t.ace-tm .ace_marker-layer .ace_step {\tbackground: rgb(252, 255, 0);\t}\t.ace-tm .ace_marker-layer .ace_stack {\tbackground: rgb(164, 229, 101);\t}\t.ace-tm .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid rgb(192, 192, 192);\t}\t.ace-tm .ace_marker-layer .ace_active-line {\tbackground: rgba(0, 0, 0, 0.07);\t}\t.ace-tm .ace_gutter-active-line {\tbackground-color : #dcdcdc;\t}\t.ace-tm .ace_marker-layer .ace_selected-word {\tbackground: rgb(250, 250, 255);\tborder: 1px solid rgb(200, 200, 250);\t}\t.ace-tm .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\t}\t',e("../lib/dom").importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=(e("./lib/oop"),e("./lib/dom"));e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,r=n.start.row,o=n.end.row,s="add"==e.action,a=r+1;a0&&!n[r];)r--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=r;s<=o;s++){var a=n[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e,t,i){for(var n=0,r=e.length-1;n<=r;){var o=n+r>>1,s=i(t,e[o]);if(s>0)n=o+1;else{if(!(s<0))return o;r=o-1}}return-(n+1)}function r(e,t,i){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=n(r,{row:t,column:-1},a.comparePoints);o<0&&(o=-o-1),o>=r.length?o=i>0?0:r.length-1:0===o&&i<0&&(o=r.length-1);var s=r[o];if(s&&i){if(s.row===t){do{s=r[o+=i]}while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row;do{l[i<0?"unshift":"push"](s),s=r[o+=i]}while(s&&s.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=r(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},f=u.el.appendChild(s.createElement("div")),p=u.el.appendChild(s.createElement("div"));p.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(n).left;p.style.left=m+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
"),f.appendChild(s.createElement("div"));var g=function(e,t,i){if(0===t&&("esc"===i||"return"===i))return u.destroy(),{command:"null"}};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(g),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.importCssString("\t .error_widget_wrapper {\t background: inherit;\t color: inherit;\t border:none\t }\t .error_widget {\t border-top: solid 2px;\t border-bottom: solid 2px;\t margin: 5px 0;\t padding: 10px 40px;\t white-space: pre-wrap;\t }\t .error_widget.ace_error, .error_widget_arrow.ace_error{\t border-color: #ff5a5a\t }\t .error_widget.ace_warning, .error_widget_arrow.ace_warning{\t border-color: #F1D817\t }\t .error_widget.ace_info, .error_widget_arrow.ace_info{\t border-color: #5a5a5a\t }\t .error_widget.ace_ok, .error_widget_arrow.ace_ok{\t border-color: #5aaa5a\t }\t .error_widget_arrow {\t position: absolute;\t border: solid 5px;\t border-top-color: transparent!important;\t border-right-color: transparent!important;\t border-left-color: transparent!important;\t top: -5px;\t }\t","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),o=e("./lib/event"),s=e("./editor").Editor,a=e("./edit_session").EditSession,l=e("./undomanager").UndoManager,c=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.define=i(16),t.edit=function(e){if("string"==typeof e){var i=e;if(!(e=document.getElementById(i)))throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var n="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;n=a.value,e=r.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(n=r.getInnerText(e),e.innerHTML="");var l=t.createEditSession(n),h=new s(new c(e));h.setSession(l);var d={document:l,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),o.addListener(window,"resize",d.onResize),h.on("destroy",function(){o.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var i=new a(e,t);return i.setUndoManager(new l),i},t.EditSession=a,t.UndoManager=l,t.version="1.2.6"}),function(){ace.acequire(["ace/ace"],function(e){e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t){(function(t){e.exports=function(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var e=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(t,i){var n=new e,r=i.endings,o=i.type;if(r)for(var s=0,a=t.length;sc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=o)break;if(h.isMultiLine())t=h.end.row;else if(n==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),o=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is)return new r(s,n,h,t.length)}}.call(s.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(d,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){t.match(/^.*[\{\(\[]\s*$/)&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new h(["ace"],i(19),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(d.prototype),t.Mode=d})},function(e,t){e.exports.id="ace/mode/json_worker", -e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if("[object Object]"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:"\t"},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws="\t\\n\v\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'},function(e,t){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/lang"),o=e("../lib/event"),s=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");n.importCssString("\t.ace_search {\tbackground-color: #ddd;\tborder: 1px solid #cbcbcb;\tborder-top: 0 none;\tmax-width: 325px;\toverflow: hidden;\tmargin: 0;\tpadding: 4px;\tpadding-right: 6px;\tpadding-bottom: 0;\tposition: absolute;\ttop: 0px;\tz-index: 99;\twhite-space: normal;\t}\t.ace_search.left {\tborder-left: 0 none;\tborder-radius: 0px 0px 5px 0px;\tleft: 0;\t}\t.ace_search.right {\tborder-radius: 0px 0px 0px 5px;\tborder-right: 0 none;\tright: 0;\t}\t.ace_search_form, .ace_replace_form {\tborder-radius: 3px;\tborder: 1px solid #cbcbcb;\tfloat: left;\tmargin-bottom: 4px;\toverflow: hidden;\t}\t.ace_search_form.ace_nomatch {\toutline: 1px solid red;\t}\t.ace_search_field {\tbackground-color: white;\tcolor: black;\tborder-right: 1px solid #cbcbcb;\tborder: 0 none;\t-webkit-box-sizing: border-box;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tfloat: left;\theight: 22px;\toutline: 0;\tpadding: 0 7px;\twidth: 214px;\tmargin: 0;\t}\t.ace_searchbtn,\t.ace_replacebtn {\tbackground: #fff;\tborder: 0 none;\tborder-left: 1px solid #dcdcdc;\tcursor: pointer;\tfloat: left;\theight: 22px;\tmargin: 0;\tposition: relative;\t}\t.ace_searchbtn:last-child,\t.ace_replacebtn:last-child {\tborder-top-right-radius: 3px;\tborder-bottom-right-radius: 3px;\t}\t.ace_searchbtn:disabled {\tbackground: none;\tcursor: default;\t}\t.ace_searchbtn {\tbackground-position: 50% 50%;\tbackground-repeat: no-repeat;\twidth: 27px;\t}\t.ace_searchbtn.prev {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \t}\t.ace_searchbtn.next {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \t}\t.ace_searchbtn_close {\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\tborder-radius: 50%;\tborder: 0 none;\tcolor: #656565;\tcursor: pointer;\tfloat: right;\tfont: 16px/16px Arial;\theight: 14px;\tmargin: 5px 1px 9px 5px;\tpadding: 0;\ttext-align: center;\twidth: 14px;\t}\t.ace_searchbtn_close:hover {\tbackground-color: #656565;\tbackground-position: 50% 100%;\tcolor: white;\t}\t.ace_replacebtn.prev {\twidth: 54px\t}\t.ace_replacebtn.next {\twidth: 27px\t}\t.ace_button {\tmargin-left: 2px;\tcursor: pointer;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\toverflow: hidden;\topacity: 0.7;\tborder: 1px solid rgba(100,100,100,0.23);\tpadding: 1px;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tcolor: black;\t}\t.ace_button:hover {\tbackground-color: #eee;\topacity:1;\t}\t.ace_button:active {\tbackground-color: #ddd;\t}\t.ace_button.checked {\tborder-color: #3399ff;\topacity:1;\t}\t.ace_search_options{\tmargin-bottom: 3px;\ttext-align: right;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\t}","ace_searchbox");var l=''.replace(/>\s+/g,">"),c=function(e,t,i){var r=n.createElement("div");r.innerHTML=l,this.element=r.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=a.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new s([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new s,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var r=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),o=!r&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(c.prototype),t.SearchBox=c,t.Search=function(e,t){(e.searchBox||new c(e)).show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter {\tbackground: #ebebeb;\tcolor: #333\t}\t\t.ace-jsoneditor.ace_editor {\tfont-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\tline-height: 1.3;\tbackground-color: #fff;\t}\t.ace-jsoneditor .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8\t}\t.ace-jsoneditor .ace_scroller {\tbackground-color: #FFFFFF\t}\t.ace-jsoneditor .ace_text-layer {\tcolor: gray\t}\t.ace-jsoneditor .ace_variable {\tcolor: #1a1a1a\t}\t.ace-jsoneditor .ace_cursor {\tborder-left: 2px solid #000000\t}\t.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\tborder-left: 0px;\tborder-bottom: 1px solid #000000\t}\t.ace-jsoneditor .ace_marker-layer .ace_selection {\tbackground: lightgray\t}\t.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px #FFFFFF;\tborder-radius: 2px\t}\t.ace-jsoneditor .ace_marker-layer .ace_step {\tbackground: rgb(255, 255, 0)\t}\t.ace-jsoneditor .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid #BFBFBF\t}\t.ace-jsoneditor .ace_marker-layer .ace_active-line {\tbackground: #FFFBD1\t}\t.ace-jsoneditor .ace_gutter-active-line {\tbackground-color : #dcdcdc\t}\t.ace-jsoneditor .ace_marker-layer .ace_selected-word {\tborder: 1px solid lightgray\t}\t.ace-jsoneditor .ace_invisible {\tcolor: #BFBFBF\t}\t.ace-jsoneditor .ace_keyword,\t.ace-jsoneditor .ace_meta,\t.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\tcolor: #AF956F\t}\t.ace-jsoneditor .ace_keyword.ace_operator {\tcolor: #484848\t}\t.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\tcolor: #96DC5F\t}\t.ace-jsoneditor .ace_constant.ace_language {\tcolor: darkorange\t}\t.ace-jsoneditor .ace_constant.ace_numeric {\tcolor: red\t}\t.ace-jsoneditor .ace_constant.ace_character.ace_entity {\tcolor: #BF78CC\t}\t.ace-jsoneditor .ace_invalid {\tcolor: #FFFFFF;\tbackground-color: #FF002A;\t}\t.ace-jsoneditor .ace_fold {\tbackground-color: #AF956F;\tborder-color: #000000\t}\t.ace-jsoneditor .ace_storage,\t.ace-jsoneditor .ace_support.ace_class,\t.ace-jsoneditor .ace_support.ace_function,\t.ace-jsoneditor .ace_support.ace_other,\t.ace-jsoneditor .ace_support.ace_type {\tcolor: #C52727\t}\t.ace-jsoneditor .ace_string {\tcolor: green\t}\t.ace-jsoneditor .ace_comment {\tcolor: #BCC8BA\t}\t.ace-jsoneditor .ace_entity.ace_name.ace_tag,\t.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\tcolor: #606060\t}\t.ace-jsoneditor .ace_markup.ace_underline {\ttext-decoration: underline\t}\t.ace-jsoneditor .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\t}',e("../lib/dom").importCssString(t.cssText,t.cssClass)})}])}); -//# sourceMappingURL=jsoneditor.map \ No newline at end of file +undefined \ No newline at end of file diff --git a/package.json b/package.json index 0dd9fc7..d7774d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jsoneditor", - "version": "5.7.0", + "version": "5.7.1", "main": "./index", "description": "A web-based tool to view, edit, format, and validate JSON", "tags": [